Ανάγνωση από σημασιολογικά μοντέλα και εγγραφή δεδομένων που είναι αναλώσιμα από το 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 . Αυτό το σημασιολογικό μοντέλο αναφέρεται σε υλικά μάρκετινγκ παραγωγής μιας εταιρείας. Περιέχει προϊόντα, πελάτες και αντίστοιχα δεδομένα εσόδων για διάφορες επιχειρηματικές μονάδες.
- Ανοίξτε τον χώρο εργασίας σας στο Fabric Data Science
- Επιλέξτε Αποστολή αναζήτησης και επιλέξτε το σημασιολογικό μοντέλο Δείγμα κερδοφορίας πελάτη.pbix>.
Όταν ολοκληρωθεί η αποστολή, ο χώρος εργασίας σας έχει τρία νέα τεχνουργήματα: μια αναφορά Power BI, έναν πίνακα εργαλείων και ένα σημασιολογικό μοντέλο με την ονομασία Δείγμα κερδοφορίας πελάτη. Τα βήματα σε αυτό το άρθρο βασίζονται σε αυτό το μοντέλο σημασιολογίας.
Χρήση Python για την ανάγνωση δεδομένων από σημασιολογικά μοντέλα
Το SemPy Python API μπορεί να ανακτήσει δεδομένα και μετα-δεδομένα από σημασιολογικά μοντέλα που βρίσκονται σε έναν χώρο εργασίας Microsoft Fabric. Το API μπορεί επίσης να εκτελέσει ερωτήματα σε αυτά.
Το σημειωματάριό σας, το σημασιολογικό μοντέλο συνόλου δεδομένων Power BI και η λίμνη μπορεί να βρίσκονται στον ίδιο χώρο εργασίας ή σε διαφορετικούς χώρους εργασίας. Από προεπιλογή, το SemPy προσπαθεί να αποκτήσει πρόσβαση στο σημασιολογικό μοντέλο σας από:
- Ο χώρος εργασίας του lakehouse σας, εάν έχετε συνδέσει ένα lakehouse στο σημειωματάριό σας.
- Ο χώρος εργασίας του σημειωματάριού σας, εάν δεν υπάρχει συνημμένη λίμνη.
Εάν το σημασιολογικό μοντέλο σας δεν βρίσκεται σε κανέναν από αυτούς τους χώρους εργασίας, πρέπει να καθορίσετε τον χώρο εργασίας του μοντέλου σημασιολογίας όταν καλείτε μια μέθοδο SemPy.
Για την ανάγνωση δεδομένων από σημασιολογικά μοντέλα:
Παραθέστε τα διαθέσιμα σημασιολογικά μοντέλα στον χώρο εργασίας σας.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasets
Παραθέστε τους διαθέσιμους πίνακες στο μοντέλο σημασιολογίας "Δείγμα κερδοφορίας πελάτη".
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tables
Παρατίθενται οι μετρήσεις που ορίζονται στο σημασιολογικό μοντέλο "Δείγμα κερδοφορίας πελάτη".
Φιλοδώρημα
Στο ακόλουθο δείγμα κώδικα, καθορίσαμε τον χώρο εργασίας για το SemPy για πρόσβαση στο μοντέλο σημασιολογίας. Μπορείτε να αντικαταστήσετε
Your Workspace
το με το όνομα του χώρου εργασίας όπου έχετε αποστείλει το μοντέλο σημασιολογίας (από την ενότητα Αποστολή του μοντέλου σημασιολογίας στον χώρο εργασίας σας).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace") df_measures
Εδώ, προσδιορίσαμε ότι ο πίνακας Πελάτης είναι ο πίνακας ενδιαφέροντος.
Διαβάστε τον πίνακα Customer από το σημασιολογικό μοντέλο "Δείγμα κερδοφορίας πελάτη".
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_table
Σημείωμα
- Τα δεδομένα ανακτώνται με χρήση XMLA. Αυτό απαιτεί να είναι ενεργοποιημένη τουλάχιστον XMLA μόνο για ανάγνωση.
- Η ποσότητα των ανακτήσιμων δεδομένων περιορίζεται κατά - τη μέγιστη μνήμη ανά ερώτημα της SKU εκχωρημένων πόρων που φιλοξενεί το μοντέλο σημασιολογίας - τον κόμβο προγράμματος οδήγησης Spark (επισκεφθείτε τα μεγέθη κόμβων για περισσότερες πληροφορίες) που εκτελεί το σημειωματάριο
- Όλες οι αιτήσεις χρησιμοποιούν χαμηλή προτεραιότητα για την ελαχιστοποίηση των επιπτώσεων στην απόδοση των Υπηρεσιών ανάλυσης του Microsoft Azure και χρεώνονται ως αλληλεπιδραστικές αιτήσεις.
Αξιολογήστε τη μέτρηση Συνολικά έσοδα για την κατάσταση και την ημερομηνία κάθε πελάτη.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measure
Σημείωμα
- Από προεπιλογή, τα δεδομένα δεν ανακτώνται με χρήση XMLA και επομένως δεν απαιτείται η ενεργοποίηση μόνο για ανάγνωση XMLA.
- Τα δεδομένα δεν υπόκεινται σε περιορισμούς παρασκηνίου του Power BI.
- Η ποσότητα των ανακτήσιμων δεδομένων περιορίζεται κατά - τη μέγιστη μνήμη ανά ερώτημα της SKU εκχωρημένων πόρων που φιλοξενεί το σημασιολογικό μοντέλο - τον κόμβο προγράμματος οδήγησης Spark (επισκεφθείτε τα μεγέθη κόμβων για περισσότερες πληροφορίες) που εκτελεί το σημειωματάριο
- Όλες οι αιτήσεις χρεώνονται ως αλληλεπιδραστικές αιτήσεις
Για να προσθέσετε φίλτρα στον υπολογισμό μέτρησης, καθορίστε μια λίστα επιτρεπόμενων τιμών για μια συγκεκριμένη στήλη.
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
Μπορείτε επίσης να αξιολογήσετε τη μέτρηση Συνολικά έσοδα ανά κατάσταση και ημερομηνία πελάτη με ένα ερώτημα 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 (επισκεφθείτε τα μεγέθη κόμβων για περισσότερες πληροφορίες)
- Όλες οι αιτήσεις χρησιμοποιούν χαμηλή προτεραιότητα για την ελαχιστοποίηση των επιπτώσεων στις επιδόσεις των Υπηρεσιών ανάλυσης και χρεώνονται ως αλληλεπιδραστικές αιτήσεις
Χρησιμοποιήστε τη μαγεία των
%%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()
Μπορείτε να προσθέσετε μετρήσεις σε δεδομένα που ανακτώνται από εξωτερικές προελεύσεις. Αυτή η προσέγγιση συνδυάζει τρεις εργασίες:
- Επιλύει ονόματα στηλών σε διαστάσεις 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.