Κοινοποίηση μέσω


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

Σε αυτήν την εκμάθηση, βασίζεστε στην εργασία ενός αναλυτή Power BI που αποθηκεύεται ως σημασιολογικά μοντέλα (σύνολα δεδομένων Power BI). Χρησιμοποιώντας SemPy (προεπισκόπηση) στην εμπειρία επιστήμης δεδομένων συνάψεων στο Microsoft Fabric, μπορείτε να αναλύσετε λειτουργικές εξαρτήσεις σε στήλες DataFrame. Αυτή η ανάλυση σάς βοηθά να ανακαλύψετε λεπτά ζητήματα ποιότητας δεδομένων για να λάβετε πιο ακριβείς πληροφορίες.

Σε αυτή την εκμάθηση, θα μάθετε πώς μπορείτε να κάνετε τα εξής:

  • Εφαρμόστε γνώσεις τομέα σε υποθέσεις τύπων σχετικά με λειτουργικές εξαρτήσεις σε ένα μοντέλο σημασιολογίας.
  • Εξοικειωθείτε με στοιχεία της βιβλιοθήκης Python του Semantic Link (SemPy) που ενοποιούνται με το Power BI και βοηθούν στην αυτοματοποίηση της ανάλυσης ποιότητας δεδομένων. Αυτά τα στοιχεία περιλαμβάνουν:
    • FabricDataFrame—δομή τύπου πάντα ενισχυμένη με πρόσθετες σημασιολογικές πληροφορίες
    • Συναρτήσεις που αντλούν σημασιολογικά μοντέλα από ένα χώρο εργασίας Fabric στο σημειωματάριό σας
    • Συναρτήσεις που αξιολογούν υποθέσεις λειτουργικής εξάρτησης και εντοπίζουν παραβιάσεις σχέσεων στα σημασιολογικά σας μοντέλα

Προϋποθέσεις

  • Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.

  • Εισέλθετε για να το Microsoft Fabric.

  • Μεταβείτε στο Fabric χρησιμοποιώντας την εναλλαγή εμπειριών στην κάτω αριστερή πλευρά της αρχικής σελίδας σας.

    Στιγμιότυπο οθόνης που εμφανίζει την επιλογή του Fabric στο μενού εναλλαγής εμπειριών.

  1. Επιλέξτε Χώροι εργασίας από το παράθυρο περιήγησης για να βρείτε και να επιλέξετε τον χώρο εργασίας σας. Αυτός ο χώρος εργασίας γίνεται ο τρέχων χώρος εργασίας σας.

  2. Κάντε λήψη του αρχείου Customer Profitability Sample.pbix από το αποθετήριο δειγμάτων υφασμάτων GitHub.

  3. Στον χώρο εργασίας σας, επιλέξτε ΕισαγωγήΑναφορά ή Σελιδοποιημένη αναφοράΑπό αυτόν τον υπολογιστή για να αποστείλετε το αρχείο Δείγμα κερδοφορίας πελάτη .pbix στον χώρο εργασίας σας.

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

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

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

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

  1. Χρησιμοποιήστε το %pip για να εγκαταστήσετε το SemPy από το PyPI στο σημειωματάριο.

    %pip install semantic-link
    
  2. Εισαγάγετε τις λειτουργικές μονάδες που χρειάζεστε.

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

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

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

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

    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, αυτός ο κώδικας προετοιμάζει μια δομή δεδομένων που ονομάζεται a FabricDataFrame και προσθέτει λειτουργίες πάνω από τα πάντα.

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

    type(customer)
    

    Η έξοδος δείχνει ότι customer είναι sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.

  4. Ενώστε τα customer αντικείμενα and stateDataFrame .

    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, πιθανώς επειδή υπάρχουν πολλές παραβιάσεις στη σχέση μεταξύ των στηλών. Χρησιμοποιήστε τη λειτουργία του plot_dependency_violations SemPy για να απεικονίσετε παραβιάσεις εξάρτησης μεταξύ συγκεκριμένων στηλών.

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

  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 για Postal Code.

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

  4. Αυξήστε το όριο στην εντροπία υπό όρους από την προεπιλεγμένη τιμή του 0.01 σε 0.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']
    

    Το αποτέλεσμα δείχνει την πόλη Downers Grove στο Ιλινόις και τη Νεμπράσκα. Ωστόσο, το 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 Design, εμφανίζεται σε δύο περιοχές—Ηνωμένες Πολιτείες και Καναδάς. Αυτή η περίπτωση μπορεί να μην είναι σημασιολογική παραβίαση, απλώς ασυνήθιστη. Ωστόσο, αξίζει μια προσεκτική ματιά:

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

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

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

Η διερευνητική ανάλυση δεδομένων και ο καθαρισμός δεδομένων είναι επαναληπτικοί. Αυτό που βρίσκετε εξαρτάται από τις ερωτήσεις και την προοπτική σας. Το Semantic Link σάς παρέχει νέα εργαλεία για να αξιοποιήσετε περισσότερο τα δεδομένα σας.

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