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


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

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

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

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

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

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

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

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

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

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

  • Κάντε λήψη του Customer Profitability Sample.pbix σημασιολογικό μοντέλο από το αποθετήριοfabric-samples GitHub .

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

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

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

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

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

  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. Εκτελέστε τη συνάρτηση find_dependencies του SemPy στο συγχωνευμένο DataFrame για να αναγνωρίσετε τυχόν υπάρχουσες λειτουργικές εξαρτήσεις μεταξύ των τιμών στις στήλες:

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

    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 για ταχυδρομικό κώδικα.

  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']
    

    Το αποτέλεσμα δείχνει την πόλη Ντάουνερς Γκρόουβ να εμφανίζεται στο Ιλινόις και τη Νεμπράσκα. Ωστόσο, το Downer's 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']
    

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

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

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