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


Ανάγνωση από σημασιολογικά μοντέλα και εγγραφή δεδομένων που είναι αναλώσιμα από το 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. Το API μπορεί επίσης να εκτελέσει ερωτήματα σε αυτά.

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

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

Εάν το σημασιολογικό μοντέλο σας δεν βρίσκεται σε κανέναν από αυτούς τους χώρους εργασίας, πρέπει να καθορίσετε τον χώρο εργασίας του μοντέλου σημασιολογίας όταν καλείτε μια μέθοδο 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", τα pandas θέτουν τις στήλες DataFrame που προκύπτουν στην καλύτερη δυνατή convert_dtypes dtype. Εάν αυτή η παράμετρος είναι απενεργοποιημένη, μπορεί να προκύψουν προβλήματα ασυμβατότητας τύπου μεταξύ στηλών σχετιζόμενων πινάκων. το μοντέλο 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.