Κοινή χρήση μέσω


Εκμάθηση: Ανάλυση λειτουργικών εξαρτήσεων σε ένα σημασιολογικό μοντέλο

Σε αυτή την εκμάθηση, θα βασιστείτε σε προηγούμενες εργασίες που έγιναν από έναν αναλυτή 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.

    Στιγμιότυπο οθόνης του μενού εναλλαγής εμπειρίας, που εμφανίζει πού μπορείτε να επιλέξετε Επιστήμη δεδομένων.

Ακολουθήστε τις οδηγίες στο σημειωματάριο

Το σημειωματάριο powerbi_dependencies_tutorial.ipynb συνοδεύει αυτή την εκμάθηση.

Για να ανοίξετε το σημειωματάριο που συνοδεύει αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο θέμα Προετοιμασία του συστήματός σας για προγράμματα εκμάθησης επιστήμης δεδομένων, για να εισαγάγετε το σημειωματάριο στον χώρο εργασίας σας.

Εάν προτιμάτε να αντιγράψετε και να επικολλήσετε τον κώδικα από αυτή τη σελίδα, μπορείτε να δημιουργήσετε ένα νέο σημειωματάριο.

Φροντίστε να επισυνάψετε ένα lakehouse στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.

Ρύθμιση του σημειωματάριου

Σε αυτή την ενότητα, ρυθμίζετε ένα περιβάλλον σημειωματάριου με τις απαραίτητες λειτουργικές μονάδες και δεδομένα.

  1. Εγκαταστήστε SemPy από το PyPI χρησιμοποιώντας τη %pip δυνατότητα ενσωματωμένης εγκατάστασης μέσα στο σημειωματάριο:

    %pip install semantic-link
    
  2. Εκτελέστε τις απαραίτητες εισαγωγές λειτουργικών μονάδων που θα χρειαστείτε αργότερα:

    import sempy.fabric as fabric
    from sempy.dependencies import plot_dependency_metadata
    

Φόρτωση και προεπεξεργασία των δεδομένων

Αυτό το εκπαιδευτικό βοήθημα χρησιμοποιεί ένα τυπικό δείγμα σημασιολογικού μοντέλου Δείγμα κερδοφορίας πελάτη.pbix. Για μια περιγραφή του σημασιολογικού μοντέλου, ανατρέξτε στο Δείγμα κερδοφορίας πελάτη για το Power BI.

  1. Φορτώστε τα δεδομένα του Power BI στο FabricDataFrames, χρησιμοποιώντας τη συνάρτηση του read_table SemPy:

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. Φορτώστε τον State πίνακα σε ένα FabricDataFrame:

    state = fabric.read_table(dataset, "State")
    state.head()
    

    Παρόλο που το αποτέλεσμα αυτού του κώδικα μοιάζει με pandas DataFrame, στην πραγματικότητα έχετε προετοιμάσει μια δομή δεδομένων που ονομάζεται και FabricDataFrame υποστηρίζει ορισμένες χρήσιμες λειτουργίες με βάση τα pandas.

  3. Ελέγξτε τον τύπο δεδομένων του customer:

    type(customer)
    

    Η έξοδος επιβεβαιώνει ότι customer είναι τύπου sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.'

  4. Συμμετάσχετε στα customer και state DataFrames:

    customer_state_df = customer.merge(state, left_on="State", right_on="StateCode",  how='left')
    customer_state_df.head()
    

Προσδιορισμός λειτουργικών εξαρτήσεων

Μια λειτουργική εξάρτηση εκδηλώνεται ως σχέση ένα-προς-πολλά μεταξύ των τιμών σε δύο (ή περισσότερες) στήλες μέσα σε ένα DataFrame. Αυτές οι σχέσεις μπορούν να χρησιμοποιηθούν για τον αυτόματο εντοπισμό προβλημάτων ποιότητας δεδομένων.

  1. Εκτελέστε τη συνάρτηση SemPy find_dependencies στο συγχωνευμένο DataFrame για να αναγνωρίσετε τυχόν υπάρχουσες λειτουργικές εξαρτήσεις μεταξύ των τιμών στις στήλες:

    dependencies = customer_state_df.find_dependencies()
    dependencies
    
  2. Απεικονίστε τις εξαρτήσεις που εντοπίστηκαν χρησιμοποιώντας τη συνάρτηση SemPy plot_dependency_metadata :

    plot_dependency_metadata(dependencies)
    

    Στιγμιότυπο οθόνης που εμφανίζει τη σχεδίαση μετα-δεδομένων εξάρτησης.

    Όπως αναμενόταν, το γράφημα λειτουργικών εξαρτήσεων δείχνει ότι η Customer στήλη προσδιορίζει ορισμένες στήλες όπως City, Postal Codeκαι Name.

    Παραδόξως, το γράφημα δεν εμφανίζει λειτουργική εξάρτηση μεταξύ City του και Postal Codeτου , πιθανώς επειδή υπάρχουν πολλές παραβιάσεις στις σχέσεις μεταξύ των στηλών. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση SemPy plot_dependency_violations για να απεικονίσετε παραβιάσεις των εξαρτήσεων μεταξύ συγκεκριμένων στηλών.

Εξερεύνηση των δεδομένων για ποιοτικά προβλήματα

  1. Σχεδιάστε ένα γράφημα με τη συνάρτηση απεικόνισης του plot_dependency_violations SemPy.

    customer_state_df.plot_dependency_violations('Postal Code', 'City')
    

    Στιγμιότυπο οθόνης που εμφανίζει τη σχεδίαση παραβιάσεων εξάρτησης.

    Η σχεδίαση των παραβιάσεων εξάρτησης εμφανίζει τιμές για Postal Code την αριστερή πλευρά και τιμές για City τη δεξιά πλευρά. Ένα άκρο συνδέει μια Postal Code αριστερή πλευρά με μια City στα δεξιά πλευρά εάν υπάρχει μια γραμμή που περιέχει αυτές τις δύο τιμές. Τα άκρα επισημαίνονται με το πλήθος αυτών των γραμμών. Για παράδειγμα, υπάρχουν δύο γραμμές με ταχυδρομικό κώδικα 20004, η μία με την πόλη "Βόρειος Πύργος" και η άλλη με την πόλη "Ουάσιγκτον".

    Επιπλέον, η σχεδίαση παρουσιάζει μερικές παραβιάσεις και πολλές κενές τιμές.

  2. Επιβεβαιώστε τον αριθμό των κενών τιμών για Postal Codeτο :

    customer_state_df['Postal Code'].isna().sum()
    

    50 γραμμές έχουν NA για ταχυδρομικό κώδικα.

  3. Αποθέστε γραμμές με κενές τιμές. Στη συνέχεια, βρείτε τις εξαρτήσεις χρησιμοποιώντας τη 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.010.05, απλώς για να δείτε τις εξαρτήσεις. Τα χαμηλότερα όρια έχουν ως αποτέλεσμα λιγότερες εξαρτήσεις (ή υψηλότερη επιλεκτικότητα).

  4. Αυξήστε το όριο στην εντροπία υπό όρους από την προεπιλεγμένη τιμή σε 0.010.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    Σχεδίαση των μετα-δεδομένων εξάρτησης με υψηλότερο όριο για εντροπία.

    Εάν εφαρμόζετε γνώση τομέα για την οποία η οντότητα προσδιορίζει τις τιμές άλλων οντοτήτων, αυτό το γράφημα εξαρτήσεων φαίνεται ακριβές.

  5. Εξερευνήστε περισσότερα προβλήματα ποιότητας δεδομένων που εντοπίστηκαν. Για παράδειγμα, ενώνονται City τα διακεκομμένα βέλη και Region, το οποίο υποδεικνύει ότι η εξάρτηση είναι μόνο κατά προσέγγιση. Αυτή η κατά προσέγγιση σχέση μπορεί να σημαίνει ότι υπάρχει μια μερική λειτουργική εξάρτηση.

    customer_state_df.list_dependency_violations('City', 'Region')
    
  6. Ρίξτε μια πιο προσεκτική ματιά σε κάθε μία από τις περιπτώσεις όπου μια τιμή καμίας Region τιμής προκαλεί παραβίαση:

    customer_state_df[customer_state_df.City=='Downers Grove']
    

    Το αποτέλεσμα δείχνει την πόλη Ντάουνερς Γκρόουβ να εμφανίζεται στο Ιλινόις και τη Νεμπράσκα. Ωστόσο, το Ντάουνερς Γκρόουβ είναι μια πόλη στο Ιλινόις, όχι στη Νεμπράσκα.

  7. Ρίξτε μια ματιά στην πόλη του Fremont:

    customer_state_df[customer_state_df.City=='Fremont']
    

    Υπάρχει μια πόλη που λέγεται Φρεμόντ στην Καλιφόρνια. Ωστόσο, για το Τέξας, η μηχανή αναζήτησης επιστρέφει Premont, όχι Fremont.

  8. Είναι επίσης ύποπτο να δείτε παραβιάσεις της εξάρτησης μεταξύ Name και Country/Region, όπως υποδεικνύεται από τη διάστικτη γραμμή στο αρχικό γράφημα των παραβιάσεων εξάρτησης (πριν από την πτώση των γραμμών με κενές τιμές).

    customer_state_df.list_dependency_violations('Name', 'Country/Region')
    

    Φαίνεται ότι ένας πελάτης, Η σχεδίαση SDI υπάρχει σε δύο περιοχές - Ηνωμένες Πολιτείες και τον Καναδά. Αυτό το περιστατικό μπορεί να μην αποτελεί σημασιολογική παραβίαση, αλλά μπορεί να είναι μια ασυνήθιστη περίπτωση. Ωστόσο, αξίζει να ρίξετε μια προσεκτική ματιά:

  9. Ρίξτε μια πιο προσεκτική ματιά στη σχεδίαση SDI του πελάτη:

    customer_state_df[customer_state_df.Name=='SDI Design']
    

    Περαιτέρω επιθεώρηση δείχνει ότι είναι στην πραγματικότητα δύο διαφορετικοί πελάτες (από διαφορετικές βιομηχανίες) με το ίδιο όνομα.

Η διερευνητική ανάλυση δεδομένων είναι μια συναρπαστική διαδικασία, το ίδιο και η εκκαθάριση δεδομένων. Πάντα υπάρχει κάτι που κρύβεται από τα δεδομένα, ανάλογα με το πώς τα βλέπετε, τι θέλετε να ρωτήσετε και ούτω καθεξής. Η Σύνδεση σημασιολογίας σάς παρέχει νέα εργαλεία που μπορείτε να χρησιμοποιήσετε για να επιτύχετε περισσότερα με τα δεδομένα σας.

Δείτε άλλα προγράμματα εκμάθησης για τη σημασιολογική σύνδεση / SemPy: