Εκμάθηση: Ανάλυση λειτουργικών εξαρτήσεων σε ένα σημασιολογικό μοντέλο
Σε αυτή την εκμάθηση, θα βασιστείτε σε προηγούμενες εργασίες που έγιναν από έναν αναλυτή Power BI και αποθηκεύατε με τη μορφή σημασιολογικών μοντέλων (σύνολα δεδομένων Power BI). Χρησιμοποιώντας το SemPy (προεπισκόπηση) στην εμπειρία Synapse Data Science εντός του Microsoft Fabric, αναλύετε τις λειτουργικές εξαρτήσεις που υπάρχουν σε στήλες ενός DataFrame. Αυτή η ανάλυση σάς βοηθά να ανακαλύψετε μη εγγενή προβλήματα ποιότητας δεδομένων, προκειμένου να λάβετε πιο ακριβείς πληροφορίες.
Σε αυτό το εκπαιδευτικό βοήθημα, θα μάθετε πώς μπορείτε να κάνετε τα εξής:
- Εφαρμόστε γνώσεις τομέα σε υποθέσεις τύπων σχετικά με λειτουργικές εξαρτήσεις σε ένα μοντέλο σημασιολογίας.
- Εξοικειωθείτε με τα στοιχεία της βιβλιοθήκης Python (SemPy) της σημασιολογικής σύνδεσης που υποστηρίζουν ενοποίηση με το Power BI και βοηθήστε στην αυτοματοποίηση της ανάλυσης ποιότητας δεδομένων. Αυτά τα στοιχεία περιλαμβάνουν:
- FabricDataFrame - μια δομή που μοιάζει με pandas ενισχυμένη με πρόσθετες σημασιολογικές πληροφορίες.
- Χρήσιμες συναρτήσεις για την άντληση σημασιολογικών μοντέλων από έναν χώρο εργασίας Fabric στο σημειωματάριό σας.
- Χρήσιμες συναρτήσεις που αυτοματοποιούν την αξιολόγηση υποθέσεων σχετικά με λειτουργικές εξαρτήσεις και που αναγνωρίζουν παραβιάσεις των σχέσεων στα σημασιολογικά μοντέλα σας.
Προαπαιτούμενα στοιχεία
Λάβετε μια συνδρομή Microsoft Fabric. Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση του Microsoft Fabric.
Εισέλθετε στο Microsoft Fabric.
Χρησιμοποιήστε την εναλλαγή εμπειρίας στην αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε στην εμπειρία Synapse Data Science.
Επιλέξτε Χώροι εργασίας από το αριστερό παράθυρο περιήγησης για να βρείτε και να επιλέξετε τον χώρο εργασίας σας. Αυτός ο χώρος εργασίας γίνεται ο τρέχων χώρος εργασίας σας.
Κάντε λήψη του σημασιολογικού μοντέλου Customer Profitability Sample.pbix από το αποθετήριο δεδομένων GitHub fabric-samples και στείλτε το στον χώρο εργασίας σας.
Ακολουθήστε τις οδηγίες στο σημειωματάριο
Το σημειωματάριο powerbi_dependencies_tutorial.ipynb συνοδεύει αυτή την εκμάθηση.
Για να ανοίξετε το σημειωματάριο που συνοδεύει αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο θέμα Προετοιμασία του συστήματός σας για προγράμματα εκμάθησης επιστήμης δεδομένων, για να εισαγάγετε το σημειωματάριο στον χώρο εργασίας σας.
Εάν προτιμάτε να αντιγράψετε και να επικολλήσετε τον κώδικα από αυτή τη σελίδα, μπορείτε να δημιουργήσετε ένα νέο σημειωματάριο.
Φροντίστε να επισυνάψετε ένα lakehouse στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.
Ρύθμιση του σημειωματάριου
Σε αυτή την ενότητα, ρυθμίζετε ένα περιβάλλον σημειωματάριου με τις απαραίτητες λειτουργικές μονάδες και δεδομένα.
Εγκαταστήστε
SemPy
από το PyPI χρησιμοποιώντας τη%pip
δυνατότητα ενσωματωμένης εγκατάστασης μέσα στο σημειωματάριο:%pip install semantic-link
Εκτελέστε τις απαραίτητες εισαγωγές λειτουργικών μονάδων που θα χρειαστείτε αργότερα:
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Φόρτωση και προεπεξεργασία των δεδομένων
Αυτό το εκπαιδευτικό βοήθημα χρησιμοποιεί ένα τυπικό δείγμα σημασιολογικού μοντέλου Δείγμα κερδοφορίας πελάτη.pbix. Για μια περιγραφή του σημασιολογικού μοντέλου, ανατρέξτε στο Δείγμα κερδοφορίας πελάτη για το Power BI.
Φορτώστε τα δεδομένα του Power BI στο FabricDataFrames, χρησιμοποιώντας τη συνάρτηση του
read_table
SemPy:dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()
Φορτώστε τον
State
πίνακα σε ένα FabricDataFrame:state = fabric.read_table(dataset, "State") state.head()
Παρόλο που το αποτέλεσμα αυτού του κώδικα μοιάζει με pandas DataFrame, στην πραγματικότητα έχετε προετοιμάσει μια δομή δεδομένων που ονομάζεται και
FabricDataFrame
υποστηρίζει ορισμένες χρήσιμες λειτουργίες με βάση τα pandas.Ελέγξτε τον τύπο δεδομένων του
customer
:type(customer)
Η έξοδος επιβεβαιώνει ότι
customer
είναι τύπουsempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
.'Συμμετάσχετε στα
customer
καιstate
DataFrames:customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Προσδιορισμός λειτουργικών εξαρτήσεων
Μια λειτουργική εξάρτηση εκδηλώνεται ως σχέση ένα-προς-πολλά μεταξύ των τιμών σε δύο (ή περισσότερες) στήλες μέσα σε ένα DataFrame. Αυτές οι σχέσεις μπορούν να χρησιμοποιηθούν για τον αυτόματο εντοπισμό προβλημάτων ποιότητας δεδομένων.
Εκτελέστε τη συνάρτηση SemPy
find_dependencies
στο συγχωνευμένο DataFrame για να αναγνωρίσετε τυχόν υπάρχουσες λειτουργικές εξαρτήσεις μεταξύ των τιμών στις στήλες:dependencies = customer_state_df.find_dependencies() dependencies
Απεικονίστε τις εξαρτήσεις που εντοπίστηκαν χρησιμοποιώντας τη συνάρτηση SemPy
plot_dependency_metadata
:plot_dependency_metadata(dependencies)
Όπως αναμενόταν, το γράφημα λειτουργικών εξαρτήσεων δείχνει ότι η
Customer
στήλη προσδιορίζει ορισμένες στήλες όπωςCity
,Postal Code
καιName
.Παραδόξως, το γράφημα δεν εμφανίζει λειτουργική εξάρτηση μεταξύ
City
του καιPostal Code
του , πιθανώς επειδή υπάρχουν πολλές παραβιάσεις στις σχέσεις μεταξύ των στηλών. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση SemPyplot_dependency_violations
για να απεικονίσετε παραβιάσεις των εξαρτήσεων μεταξύ συγκεκριμένων στηλών.
Εξερεύνηση των δεδομένων για ποιοτικά προβλήματα
Σχεδιάστε ένα γράφημα με τη συνάρτηση απεικόνισης του
plot_dependency_violations
SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Η σχεδίαση των παραβιάσεων εξάρτησης εμφανίζει τιμές για
Postal Code
την αριστερή πλευρά και τιμές γιαCity
τη δεξιά πλευρά. Ένα άκρο συνδέει μιαPostal Code
αριστερή πλευρά με μιαCity
στα δεξιά πλευρά εάν υπάρχει μια γραμμή που περιέχει αυτές τις δύο τιμές. Τα άκρα επισημαίνονται με το πλήθος αυτών των γραμμών. Για παράδειγμα, υπάρχουν δύο γραμμές με ταχυδρομικό κώδικα 20004, η μία με την πόλη "Βόρειος Πύργος" και η άλλη με την πόλη "Ουάσιγκτον".Επιπλέον, η σχεδίαση παρουσιάζει μερικές παραβιάσεις και πολλές κενές τιμές.
Επιβεβαιώστε τον αριθμό των κενών τιμών για
Postal Code
το :customer_state_df['Postal Code'].isna().sum()
50 γραμμές έχουν NA για ταχυδρομικό κώδικα.
Αποθέστε γραμμές με κενές τιμές. Στη συνέχεια, βρείτε τις εξαρτήσεις χρησιμοποιώντας τη
find_dependencies
συνάρτηση. Παρατηρήστε την επιπλέον παράμετροverbose=1
που προσφέρει μια ματιά στις εσωτερικές δυνατότητες λειτουργίας του SemPy:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)
Η εντροπία υπό όρους για
Postal Code
το καιCity
είναι 0,049. Αυτή η τιμή υποδεικνύει ότι υπάρχουν παραβιάσεις λειτουργικής εξάρτησης. Προτού διορθώσετε τις παραβιάσεις, αυξήστε το όριο στην εντροπία υπό όρους από την προεπιλεγμένη τιμή σε0.01
0.05
, απλώς για να δείτε τις εξαρτήσεις. Τα χαμηλότερα όρια έχουν ως αποτέλεσμα λιγότερες εξαρτήσεις (ή υψηλότερη επιλεκτικότητα).Αυξήστε το όριο στην εντροπία υπό όρους από την προεπιλεγμένη τιμή σε
0.01
0.05
:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
Εάν εφαρμόζετε γνώση τομέα για την οποία η οντότητα προσδιορίζει τις τιμές άλλων οντοτήτων, αυτό το γράφημα εξαρτήσεων φαίνεται ακριβές.
Εξερευνήστε περισσότερα προβλήματα ποιότητας δεδομένων που εντοπίστηκαν. Για παράδειγμα, ενώνονται
City
τα διακεκομμένα βέλη καιRegion
, το οποίο υποδεικνύει ότι η εξάρτηση είναι μόνο κατά προσέγγιση. Αυτή η κατά προσέγγιση σχέση μπορεί να σημαίνει ότι υπάρχει μια μερική λειτουργική εξάρτηση.customer_state_df.list_dependency_violations('City', 'Region')
Ρίξτε μια πιο προσεκτική ματιά σε κάθε μία από τις περιπτώσεις όπου μια τιμή καμίας
Region
τιμής προκαλεί παραβίαση:customer_state_df[customer_state_df.City=='Downers Grove']
Το αποτέλεσμα δείχνει την πόλη Ντάουνερς Γκρόουβ να εμφανίζεται στο Ιλινόις και τη Νεμπράσκα. Ωστόσο, το Ντάουνερς Γκρόουβ είναι μια πόλη στο Ιλινόις, όχι στη Νεμπράσκα.
Ρίξτε μια ματιά στην πόλη του Fremont:
customer_state_df[customer_state_df.City=='Fremont']
Υπάρχει μια πόλη που λέγεται Φρεμόντ στην Καλιφόρνια. Ωστόσο, για το Τέξας, η μηχανή αναζήτησης επιστρέφει Premont, όχι Fremont.
Είναι επίσης ύποπτο να δείτε παραβιάσεις της εξάρτησης μεταξύ
Name
καιCountry/Region
, όπως υποδεικνύεται από τη διάστικτη γραμμή στο αρχικό γράφημα των παραβιάσεων εξάρτησης (πριν από την πτώση των γραμμών με κενές τιμές).customer_state_df.list_dependency_violations('Name', 'Country/Region')
Φαίνεται ότι ένας πελάτης, Η σχεδίαση SDI υπάρχει σε δύο περιοχές - Ηνωμένες Πολιτείες και τον Καναδά. Αυτό το περιστατικό μπορεί να μην αποτελεί σημασιολογική παραβίαση, αλλά μπορεί να είναι μια ασυνήθιστη περίπτωση. Ωστόσο, αξίζει να ρίξετε μια προσεκτική ματιά:
Ρίξτε μια πιο προσεκτική ματιά στη σχεδίαση SDI του πελάτη:
customer_state_df[customer_state_df.Name=='SDI Design']
Περαιτέρω επιθεώρηση δείχνει ότι είναι στην πραγματικότητα δύο διαφορετικοί πελάτες (από διαφορετικές βιομηχανίες) με το ίδιο όνομα.
Η διερευνητική ανάλυση δεδομένων είναι μια συναρπαστική διαδικασία, το ίδιο και η εκκαθάριση δεδομένων. Πάντα υπάρχει κάτι που κρύβεται από τα δεδομένα, ανάλογα με το πώς τα βλέπετε, τι θέλετε να ρωτήσετε και ούτω καθεξής. Η Σύνδεση σημασιολογίας σάς παρέχει νέα εργαλεία που μπορείτε να χρησιμοποιήσετε για να επιτύχετε περισσότερα με τα δεδομένα σας.
Σχετικό περιεχόμενο
Δείτε άλλα προγράμματα εκμάθησης για τη σημασιολογική σύνδεση / SemPy:
- Εκμάθηση: Εκκαθάριση δεδομένων με λειτουργικές εξαρτήσεις
- Εκμάθηση: Εξαγωγή και υπολογισμός μετρήσεων Power BI από ένα σημειωματάριο Jupyter
- Εκμάθηση: Εντοπισμός σχέσεων σε ένα μοντέλο σημασιολογίας, με χρήση σημασιολογικής σύνδεσης
- Εκμάθηση: Εντοπισμός σχέσεων στο σύνολο δεδομένων Synthea , με χρήση σημασιολογικής σύνδεσης
- Εκμάθηση: Επικύρωση δεδομένων με χρήση των SemPy και Great Expectations (GX) (προεπισκόπηση)
Σχόλια
https://aka.ms/ContentUserFeedback.
Σύντομα διαθέσιμα: Καθ' όλη τη διάρκεια του 2024 θα καταργήσουμε σταδιακά τα ζητήματα GitHub ως μηχανισμό ανάδρασης για το περιεχόμενο και θα το αντικαταστήσουμε με ένα νέο σύστημα ανάδρασης. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα:Υποβολή και προβολή σχολίων για