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


Ανάγνωση από σημασιολογικά μοντέλα και εγγραφή δεδομένων που είναι αναλώσιμα από το Power BI με χρήση python

Σε αυτό το άρθρο, θα μάθετε πώς να διαβάζετε δεδομένα και μετα-δεδομένα και να αξιολογείτε μετρήσεις σε σημασιολογικά μοντέλα χρησιμοποιώντας τη βιβλιοθήκη python SemPy στο Microsoft Fabric. Θα μάθετε επίσης πώς να γράφετε δεδομένα που μπορούν να καταναλώσουν σημασιολογικά μοντέλα.

Προαπαιτούμενα στοιχεία

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

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

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

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

  • Μεταβείτε στην εμπειρία επιστήμης δεδομένων στο Microsoft Fabric.
  • Δημιουργήστε ένα νέο σημειωματάριο για αντιγραφή/επικόλληση κώδικα σε κελιά.
  • Για το Spark 3.4 και νεότερες εκδόσεις, η Σύνδεση σημασιολογίας είναι διαθέσιμη στον προεπιλεγμένο χρόνο εκτέλεσης όταν χρησιμοποιείτε το Fabric και δεν χρειάζεται να την εγκαταστήσετε. Εάν χρησιμοποιείτε το Spark 3.3 ή παρακάτω ή εάν θέλετε να ενημερώσετε την πιο πρόσφατη έκδοση της Σημασιολογικής σύνδεσης, μπορείτε να εκτελέσετε την εντολή: python %pip install -U semantic-link  
  • Προσθέστε ένα Lakehouse στο σημειωματάριό σας.
  • Κάντε λήψη του σημασιολογικού μοντέλου Customer Profitability Sample.pbix από τον φάκελο συνόλων δεδομένων του αποθετηρίου δεδομένων fabric-samples και αποθηκεύστε τοπικά το σημασιολογικό μοντέλο.

Αποστολή του μοντέλου σημασιολογίας στον χώρο εργασίας σας

Σε αυτό το άρθρο, χρησιμοποιούμε το σημασιολογικό μοντέλο Customer Profitability Sample.pbix . Αυτό το σημασιολογικό μοντέλο αναφέρεται σε ένα υλικό μάρκετινγκ παραγωγής μιας εταιρείας και περιέχει δεδομένα σχετικά με προϊόντα, πελάτες και αντίστοιχα έσοδα για διάφορες επιχειρηματικές μονάδες.

  1. Ανοίξτε τον χώρο εργασίας σας στο Fabric Data Science.
  2. Επιλέξτε Αποστολή αναζήτησης και επιλέξτε το σημασιολογικό μοντέλο Δείγμα κερδοφορίας πελάτη.pbix>.

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

Όταν ολοκληρωθεί η αποστολή, ο χώρος εργασίας σας θα έχει τρία νέα τεχνουργήματα: μια αναφορά Power BI, έναν πίνακα εργαλείων και ένα σημασιολογικό μοντέλο με την ονομασία Δείγμα κερδοφορίας πελάτη. Θα χρησιμοποιήσετε αυτό το σημασιολογικό μοντέλο για τα βήματα σε αυτό το άρθρο.

Στιγμιότυπο οθόνης που εμφανίζει τα στοιχεία από το αρχείο Power BI που έχει αποσταλεί στον χώρο εργασίας.

Χρήση Python για την ανάγνωση δεδομένων από σημασιολογικά μοντέλα

Το SemPy Python API μπορεί να ανακτήσει δεδομένα και μετα-δεδομένα από σημασιολογικά μοντέλα που βρίσκονται σε έναν χώρο εργασίας Microsoft Fabric και να εκτελέσει ερωτήματα σε αυτά.

Το σημειωματάριο, το σημασιολογικό μοντέλο σας (σύνολο δεδομένων Power BI) και το Lakehouse μπορεί να βρίσκονται στον ίδιο χώρο εργασίας ή σε διαφορετικούς χώρους εργασίας. Από προεπιλογή, το SemPy προσπαθεί να αποκτήσει πρόσβαση στο σημασιολογικό μοντέλο σας από:

  • τον χώρο εργασίας του Lakehouse, εάν έχετε συνδέσει ένα Lakehouse στο σημειωματάριό σας.
  • τον χώρο εργασίας του σημειωματάριού σας, εάν δεν υπάρχει συνημμένο στο Lakehouse.

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

Για την ανάγνωση δεδομένων από σημασιολογικά μοντέλα:

  1. Παραθέστε τα διαθέσιμα σημασιολογικά μοντέλα στον χώρο εργασίας σας.

    import sempy.fabric as fabric
    
    df_datasets = fabric.list_datasets()
    df_datasets
    
  2. Παραθέστε τους διαθέσιμους πίνακες στο μοντέλο σημασιολογίας "Δείγμα κερδοφορίας πελάτη".

    df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True)
    df_tables
    
  3. Παρατίθενται οι μετρήσεις που ορίζονται στο σημασιολογικό μοντέλο "Δείγμα κερδοφορίας πελάτη".

    Φιλοδώρημα

    Στον ακόλουθο κώδικα, καθορίσαμε τον χώρο εργασίας για το SemPy για πρόσβαση στο μοντέλο σημασιολογίας. Μπορείτε να αντικαταστήσετε Your Workspace το με το όνομα του χώρου εργασίας όπου έχετε αποστείλει το μοντέλο σημασιολογίας (από την ενότητα Αποστολή του μοντέλου σημασιολογίας στον χώρο εργασίας σας).

    df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace")
    df_measures
    

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

  4. Διαβάστε τον πίνακα Customer από το σημασιολογικό μοντέλο "Δείγμα κερδοφορίας πελάτη".

    df_table = fabric.read_table("Customer Profitability Sample", "Customer")
    df_table
    

    Σημείωμα

    • Τα δεδομένα ανακτώνται με χρήση XMLA και επομένως απαιτείται να είναι ενεργοποιημένη τουλάχιστον XMLA μόνο για ανάγνωση.
    • Η ποσότητα των δεδομένων που είναι ανακτήσιμα περιορίζεται από τη μέγιστη μνήμη ανά ερώτημα της SKU εκχωρημένων πόρων που φιλοξενεί το μοντέλο σημασιολογίας και από τον κόμβο προγράμματος οδήγησης Spark (ανατρέξτε στα μεγέθη κόμβων) που εκτελεί το σημειωματάριο.
    • Όλες οι αιτήσεις χρησιμοποιούν χαμηλή προτεραιότητα για την ελαχιστοποίηση των επιπτώσεων στις επιδόσεις του Microsoft Υπηρεσίες Ανάλυσης του Azure και χρεώνονται ως αλληλεπιδραστικές αιτήσεις.
  5. Αξιολογήστε τη μέτρηση Συνολικά έσοδα ανά κατάσταση και ημερομηνία πελάτη.

    df_measure = fabric.evaluate_measure(
        "Customer Profitability Sample",
        "Total Revenue",
        ["'Customer'[State]", "Calendar[Date]"])
    df_measure
    

    Σημείωμα

    • Από προεπιλογή, τα δεδομένα δεν ανακτώνται με χρήση XMLA και επομένως δεν απαιτείται η ενεργοποίηση μόνο για ανάγνωση XMLA.
    • Επιπλέον, τα δεδομένα δεν υπόκεινται σε περιορισμούς παρασκηνίου του Power BI.
    • Η ποσότητα των δεδομένων που είναι ανακτήσιμα περιορίζεται από τη μέγιστη μνήμη ανά ερώτημα της SKU εκχωρημένων πόρων που φιλοξενεί το μοντέλο σημασιολογίας και από τον κόμβο προγράμματος οδήγησης Spark (ανατρέξτε στα μεγέθη κόμβων) που εκτελεί το σημειωματάριο.
    • Όλες οι αιτήσεις χρεώνονται ως αλληλεπιδραστικές αιτήσεις.
  6. Μπορείτε να προσθέσετε φίλτρα στον υπολογισμό μέτρησης καθορίζοντας μια λίστα τιμών που μπορεί να βρίσκονται σε μια συγκεκριμένη στήλη.

    filters = {
        "State[Region]": ["East", "Central"],
        "State[State]": ["FLORIDA", "NEW YORK"]
    }
    df_measure = fabric.evaluate_measure(
        "Customer Profitability Sample",
        "Total Revenue",
        ["Customer[State]", "Calendar[Date]"],
        filters=filters)
    df_measure
    
  7. Μπορείτε επίσης να αξιολογήσετε τη μέτρηση Συνολικά έσοδα ανά κατάσταση και ημερομηνία του πελάτη χρησιμοποιώντας ένα ερώτημα DAX.

    df_dax = fabric.evaluate_dax(
        "Customer Profitability Sample",
        """
        EVALUATE SUMMARIZECOLUMNS(
            'State'[Region],
            'Calendar'[Date].[Year],
            'Calendar'[Date].[Month],
            "Total Revenue",
            CALCULATE([Total Revenue]))
        """)
    

    Σημείωμα

    • Τα δεδομένα ανακτώνται με χρήση XMLA και επομένως απαιτείται να είναι ενεργοποιημένη τουλάχιστον XMLA μόνο για ανάγνωση.
    • Η ποσότητα των δεδομένων που είναι ανακτήσιμα περιορίζεται από τη διαθέσιμη μνήμη στο Microsoft Υπηρεσίες Ανάλυσης του Azure και τον κόμβο προγράμματος οδήγησης Spark (ανατρέξτε στα μεγέθη κόμβων).
    • Όλες οι αιτήσεις χρησιμοποιούν χαμηλή προτεραιότητα για την ελαχιστοποίηση των επιπτώσεων στην απόδοση των Υπηρεσιών ανάλυσης και χρεώνονται ως αλληλεπιδραστικές αιτήσεις.
  8. Μπορείτε να αξιολογήσετε το ίδιο ερώτημα DAX χωρίς να χρειάζεται να εισαγάγετε τη βιβλιοθήκη, χρησιμοποιώντας το %%dax μαγικό κελί. Ας εκτελέσουμε το κελί από κάτω για να φορτώσουμε %%dax τα μαγικά κύτταρα.

    %load_ext sempy
    

    Η παράμετρος χώρου εργασίας είναι προαιρετική και ακολουθεί τους ίδιους κανόνες με την παράμετρο χώρου εργασίας της evaluate_dax συνάρτησης. Η μαγεία των κελιών υποστηρίζει επίσης την πρόσβαση σε μεταβλητές Python με χρήση της {variable_name} σύνταξης. Για να χρησιμοποιήσετε μια άγκιστρο στο ερώτημα DAX, τοποθετήστε ένα άλλο άγκιστρο (π.χ. EVALUATE {{1}}).

    %%dax "Customer Profitability Sample" -w "Your Workspace"
    EVALUATE SUMMARIZECOLUMNS(
        'State'[Region],
        'Calendar'[Date].[Year],
        'Calendar'[Date].[Month],
        "Total Revenue",
        CALCULATE([Total Revenue]))
    

    Το αρχείο FabricDataFrame που προκύπτει είναι διαθέσιμο μέσω της _ μεταβλητής, η οποία καταγράφει την έξοδο του τελευταίου εκτελεσθέντος κελιού.

    df_dax = _
    
    df_dax.head()
    
  9. Εναλλακτικά, μπορείτε να προσθέσετε μετρήσεις σε δεδομένα που ανακτώνται από εξωτερικές προελεύσεις. Αυτή η προσέγγιση συνδυάζει τρεις εργασίες: επιλύει ονόματα στηλών σε διαστάσεις Power BI, ορίζει ομαδοποίηση κατά στήλες και φιλτράρει τη μέτρηση. Τυχόν ονόματα στηλών που δεν μπορούν να επιλυθούν εντός του συγκεκριμένου μοντέλου σημασιολογίας παραβλέπονται (ανατρέξτε στην υποστηριζόμενη σύνταξη DAX).

    from sempy.fabric import FabricDataFrame
    
    df = FabricDataFrame({
            "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"],
            "Customer[Country/Region]": ["US", "GB", "US"],
            "Industry[Industry]": ["Services", "CPG", "Manufacturing"],
        }
    )
    
    joined_df = df.add_measure("Total Revenue", dataset="Customer Profitability Sample")
    joined_df
    

Ειδικές παράμετροι

Το SemPy read_table και evaluate_measure οι μέθοδοι έχουν περισσότερες παραμέτρους που είναι χρήσιμες για τον χειρισμό της εξόδου. Αυτές οι παράμετροι περιλαμβάνουν:

  • fully_qualified_columns: Εάν η τιμή είναι "True", οι μέθοδοι επιστρέφουν ονόματα στηλών στη φόρμα TableName[ColumnName].
  • num_rows: Ο αριθμός των γραμμών που θα προκύψουν στο αποτέλεσμα.
  • pandas_convert_dtypes: Εάν η τιμή είναι "True", οι στήλες του DataFrame που προκύπτουν ρίχνονται στο καλύτερο δυνατό dtype, χρησιμοποιώντας pandas convert_dtypes. Εάν αυτή η παράμετρος είναι απενεργοποιημένη, μπορεί να προκύψουν προβλήματα ασυμβατότητας τύπου μεταξύ στηλών σχετιζόμενων πινάκων που ενδέχεται να μην έχουν εντοπιστεί στο μοντέλο Power BI λόγω έμμεσης μετατροπής τύπου DAX.

Το SemPy read_table χρησιμοποιεί επίσης τις πληροφορίες μοντέλου που παρέχονται από το Power BI.

  • multiindex_hierarchies: Εάν είναι True, μετατρέπει τις Ιεραρχίες Power BI σε δομή Pandas MultiIndex.

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

Οι πίνακες Spark που προστίθενται σε ένα Lakehouse προστίθενται αυτόματα στο αντίστοιχο προεπιλεγμένο μοντέλο σημασιολογίας. Αυτό το παράδειγμα παρουσιάζει τον τρόπο εγγραφής δεδομένων στο προσαρτημένο Lakehouse. Το FabricDataFrame δέχεται τα ίδια δεδομένα εισόδου με τα πλαίσια δεδομένων Pandas.

from sempy.fabric import FabricDataFrame

df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})

df_forecast.to_lakehouse_table("ForecastTable")

Με τη χρήση του Power BI, ο πίνακας ForecastTable μπορεί να προστεθεί σε ένα σύνθετο μοντέλο σημασιολογίας χρησιμοποιώντας το σημασιολογικό μοντέλο Lakehouse.