Εκμάθηση: Επικύρωση δεδομένων με χρήση των SemPy και Great Expectations (GX)
Σε αυτό το εκπαιδευτικό βοήθημα, θα μάθετε πώς μπορείτε να χρησιμοποιήσετε το SemPy μαζί με Great Expectations (GX) για την εκτέλεση επικύρωσης δεδομένων σε σημασιολογικά μοντέλα Power BI.
Αυτή η εκμάθηση σάς δείχνει πώς μπορείτε να κάνετε τα εξής:
- Επικυρώστε τους περιορισμούς σε ένα σύνολο δεδομένων στον χώρο εργασίας fabric σας με την προέλευση δεδομένων Fabric της Great Expectation (που βασίζεται στη σημασιολογική σύνδεση).
- Ρυθμίστε τις παραμέτρους ενός περιβάλλοντος δεδομένων GX, πόρων δεδομένων και προσδοκιών.
- Δείτε τα αποτελέσματα επικύρωσης με ένα σημείο ελέγχου GX.
- Χρησιμοποιήστε σημασιολογική σύνδεση για να αναλύσετε ανεπεξέργαστα δεδομένα.
Προϋποθέσεις
Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.
Εισέλθετε για να το Microsoft Fabric.
Χρησιμοποιήστε την εναλλαγή εμπειρίας στην κάτω αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε σε Fabric.
- Επιλέξτε χώροι εργασίας από το αριστερό παράθυρο περιήγησης για να βρείτε και να επιλέξετε τον χώρο εργασίας σας. Αυτός ο χώρος εργασίας γίνεται ο τρέχων χώρος εργασίας σας.
- Κάντε λήψη του αρχείου δείγματος ανάλυσης λιανικής PBIX.pbix
. - Στον χώρο εργασίας σας, επιλέξτε Εισαγωγή>Αναφορά ή>Σελιδοποιημένη αναφορά Από αυτόν τον υπολογιστή για να αποστείλετε στο χώρο εργασίας σας το αρχείο Δείγμα ανάλυσης λιανικής PBIX.pbix.
Παρακολούθηση στο σημειωματάριο
great_expectations_tutorial.ipynb είναι το σημειωματάριο που συνοδεύει αυτό το πρόγραμμα εκμάθησης.
Για να ανοίξετε το σημειωματάριο που συνοδεύει αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο Προετοιμασία του συστήματός σας για εκπαιδευτικά βοηθήματα επιστήμης δεδομένων, να εισαγάγετε το σημειωματάριο στον χώρο εργασίας σας.
Εάν προτιμάτε να αντιγράψετε και να επικολλήσετε τον κώδικα από αυτήν τη σελίδα, μπορείτε να δημιουργήσετε ένα νέο σημειωματάριο.
Βεβαιωθείτε ότι επισυνάψετε μια λίμνη στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.
Ρύθμιση του σημειωματάριου
Σε αυτή την ενότητα, ρυθμίζετε ένα περιβάλλον σημειωματάριου με τις απαραίτητες λειτουργικές μονάδες και δεδομένα.
- Εγκαταστήστε
SemPy
και τις σχετικές βιβλιοθήκεςGreat Expectations
από το PyPI χρησιμοποιώντας τη δυνατότητα εγκατάστασης%pip
εντός του σημειωματάριου.
# install libraries
%pip install semantic-link 'great-expectations<1.0' great_expectations_experimental great_expectations_zipcode_expectations
# load %%dax cell magic
%load_ext sempy
- Εκτελέστε τις απαραίτητες εισαγωγές λειτουργικών μονάδων που θα χρειαστείτε αργότερα:
import great_expectations as gx
from great_expectations.expectations.expectation import ExpectationConfiguration
from great_expectations_zipcode_expectations.expectations import expect_column_values_to_be_valid_zip5
Ρύθμιση περιβάλλοντος δεδομένων GX και προέλευσης δεδομένων
Για να ξεκινήσετε με τις Μεγάλες προσδοκίες, πρέπει πρώτα να ρυθμίσετε ένα περιβάλλον δεδομένων GX . Το περιβάλλον χρησιμεύει ως σημείο εισόδου για λειτουργίες GX και διατηρεί όλες τις σχετικές ρυθμίσεις παραμέτρων.
context = gx.get_context()
Τώρα, μπορείτε να προσθέσετε το σύνολο δεδομένων Fabric σε αυτό το περιβάλλον ως προέλευση δεδομένων για να ξεκινήσετε την αλληλεπίδραση με τα δεδομένα. Αυτό το εκπαιδευτικό βοήθημα χρησιμοποιεί ένα τυπικό δείγμα σημασιολογικού μοντέλου Power BI αρχείου Retail Analysis Sample .pbix.
ds = context.sources.add_fabric_powerbi("Retail Analysis Data Source", dataset="Retail Analysis Sample PBIX")
Καθορισμός πόρων δεδομένων
Καθορίστε Data Assets για να καθορίσετε το υποσύνολο των δεδομένων με τα οποία θέλετε να εργαστείτε. Το στοιχείο μπορεί να είναι τόσο απλό όσο οι πλήρεις πίνακες ή να είναι τόσο σύνθετο όσο ένα προσαρμοσμένο ερώτημα παραστάσεων ανάλυσης δεδομένων (DAX).
Εδώ, θα προσθέσετε πολλούς πόρους:
- Πίνακας του Power BI
- Μέτρηση Power BI
- Προσαρμοσμένο ερώτημα DAX
- ερώτημα προβολής δυναμικής διαχείρισης (DMV)
Πίνακας του Power BI
Προσθέστε έναν πίνακα Power BI ως στοιχείο δεδομένων.
ds.add_powerbi_table_asset("Store Asset", table="Store")
Μέτρηση Power BI
Εάν το σύνολο δεδομένων σας περιέχει προκαθορισμένες μετρήσεις, προσθέτετε τις μετρήσεις ως πόρους μετά από ένα παρόμοιο API στο evaluate_measure
του SemPy .
ds.add_powerbi_measure_asset(
"Total Units Asset",
measure="TotalUnits",
groupby_columns=["Time[FiscalYear]", "Time[FiscalMonth]"]
)
DAX
Εάν θέλετε να ορίσετε τις δικές σας μετρήσεις ή να ελέγχετε περισσότερο συγκεκριμένες γραμμές, μπορείτε να προσθέσετε ένα στοιχείο DAX με ένα προσαρμοσμένο ερώτημα DAX. Εδώ, ορίζουμε μια Total Units Ratio
μέτρηση διαιρώντας δύο υπάρχουσες μετρήσεις.
ds.add_powerbi_dax_asset(
"Total Units YoY Asset",
dax_string=
"""
EVALUATE SUMMARIZECOLUMNS(
'Time'[FiscalYear],
'Time'[FiscalMonth],
"Total Units Ratio", DIVIDE([Total Units This Year], [Total Units Last Year])
)
"""
)
Ερώτημα DMV
Σε ορισμένες περιπτώσεις, μπορεί να είναι χρήσιμο να χρησιμοποιήσετε υπολογισμούς προβολής δυναμικής διαχείρισης (DMV) ως μέρος της διαδικασίας επικύρωσης δεδομένων. Για παράδειγμα, μπορείτε να παρακολουθείτε τον αριθμό των παραβιάσεων ακεραιότητας αναφορών εντός του συνόλου δεδομένων σας. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Εκκαθάριση δεδομένων = ταχύτερες αναφορές.
ds.add_powerbi_dax_asset(
"Referential Integrity Violation",
dax_string=
"""
SELECT
[Database_name],
[Dimension_Name],
[RIVIOLATION_COUNT]
FROM $SYSTEM.DISCOVER_STORAGE_TABLES
"""
)
Προσδοκίες
Για να προσθέσετε συγκεκριμένους περιορισμούς στους πόρους, πρέπει πρώτα να ρυθμίσετε τις παραμέτρους του Expectation Suites. Μετά την προσθήκη μεμονωμένων προσδοκώμενων σε κάθε οικογένεια προγραμμάτων, μπορείτε, στη συνέχεια, να ενημερώσετε το περιβάλλον δεδομένων που έχει ρυθμιστεί στην αρχή με τη νέα οικογένεια προγραμμάτων. Για μια πλήρη λίστα με τις διαθέσιμες προσδοκίες, ανατρέξτε στο Συλλογή προσδοκιών GX.
Ξεκινήστε προσθέτοντας μια "Οικογένεια καταστημάτων λιανικής" με δύο προσδοκίες:
- έγκυρος ταχυδρομικός κώδικας
- ένας πίνακας με πλήθος γραμμών μεταξύ 80 και 200
suite_store = context.add_expectation_suite("Retail Store Suite")
suite_store.add_expectation(ExpectationConfiguration("expect_column_values_to_be_valid_zip5", { "column": "PostalCode" }))
suite_store.add_expectation(ExpectationConfiguration("expect_table_row_count_to_be_between", { "min_value": 80, "max_value": 200 }))
context.add_or_update_expectation_suite(expectation_suite=suite_store)
Μέτρηση TotalUnits
Προσθέστε μια "Οικογένεια μετρήσεων λιανικής" με μία προσδοκία:
- Οι τιμές στήλης πρέπει να είναι μεγαλύτερες από 50.000
suite_measure = context.add_expectation_suite("Retail Measure Suite")
suite_measure.add_expectation(ExpectationConfiguration(
"expect_column_values_to_be_between",
{
"column": "TotalUnits",
"min_value": 50000
}
))
context.add_or_update_expectation_suite(expectation_suite=suite_measure)
Total Units Ratio
DAX
Προσθέστε μια "Οικογένεια DAX λιανικής" με μία προσδοκία:
- Οι τιμές στήλης για την Αναλογία συνολικών μονάδων πρέπει να είναι μεταξύ 0,8 και 1,5
suite_dax = context.add_expectation_suite("Retail DAX Suite")
suite_dax.add_expectation(ExpectationConfiguration(
"expect_column_values_to_be_between",
{
"column": "[Total Units Ratio]",
"min_value": 0.8,
"max_value": 1.5
}
))
context.add_or_update_expectation_suite(expectation_suite=suite_dax)
Παραβιάσεις ακεραιότητας αναφορών (DMV)
Προσθέστε μια "Οικογένεια DMV λιανικής" με μία προσδοκία:
- η RIVIOLATION_COUNT θα πρέπει να είναι 0
suite_dmv = context.add_expectation_suite("Retail DMV Suite")
# There should be no RI violations
suite_dmv.add_expectation(ExpectationConfiguration(
"expect_column_values_to_be_in_set",
{
"column": "RIVIOLATION_COUNT",
"value_set": [0]
}
))
context.add_or_update_expectation_suite(expectation_suite=suite_dmv)
Επικύρωση
Για να εκτελέσετε πραγματικά τις καθορισμένες προσδοκίες έναντι των δεδομένων, δημιουργήστε πρώτα ένα Στοιχείο ελέγχου και προσθέστε το στο πλαίσιο. Για περισσότερες πληροφορίες σχετικά με τη ρύθμιση παραμέτρων του σημείου ελέγχου, ανατρέξτε στο θέμα ροής εργασιών επικύρωσης δεδομένων.
checkpoint_config = {
"name": f"Retail Analysis Checkpoint",
"validations": [
{
"expectation_suite_name": "Retail Store Suite",
"batch_request": {
"datasource_name": "Retail Analysis Data Source",
"data_asset_name": "Store Asset",
},
},
{
"expectation_suite_name": "Retail Measure Suite",
"batch_request": {
"datasource_name": "Retail Analysis Data Source",
"data_asset_name": "Total Units Asset",
},
},
{
"expectation_suite_name": "Retail DAX Suite",
"batch_request": {
"datasource_name": "Retail Analysis Data Source",
"data_asset_name": "Total Units YoY Asset",
},
},
{
"expectation_suite_name": "Retail DMV Suite",
"batch_request": {
"datasource_name": "Retail Analysis Data Source",
"data_asset_name": "Referential Integrity Violation",
},
},
],
}
checkpoint = context.add_checkpoint(
**checkpoint_config
)
Τώρα εκτελέστε το σημείο ελέγχου και εξαγάγετε τα αποτελέσματα ως pandas DataFrame για απλή μορφοποίηση.
result = checkpoint.run()
Επεξεργαστείτε και εκτυπώστε τα αποτελέσματά σας.
import pandas as pd
data = []
for run_result in result.run_results:
for validation_result in result.run_results[run_result]["validation_result"]["results"]:
row = {
"Batch ID": run_result.batch_identifier,
"type": validation_result.expectation_config.expectation_type,
"success": validation_result.success
}
row.update(dict(validation_result.result))
data.append(row)
result_df = pd.DataFrame.from_records(data)
result_df[["Batch ID", "type", "success", "element_count", "unexpected_count", "partial_unexpected_list"]]
Από αυτά τα αποτελέσματα μπορείτε να δείτε ότι όλες οι προσδοκίες σας πέρασαν την επικύρωση, εκτός από το "Total Units YoY Asset" που ορίσατε μέσω ενός προσαρμοσμένου ερωτήματος DAX.
Διαγνωστικός έλεγχος
Χρησιμοποιώντας τη σύνδεση σημασιολογίας, μπορείτε να λάβετε τα δεδομένα προέλευσης για να κατανοήσετε ποια ακριβή έτη είναι εκτός περιοχής. Η Σύνδεση σημασιολογίας παρέχει μια ενσωματωμένη μαγεία για την εκτέλεση ερωτημάτων DAX. Χρησιμοποιήστε τη σημασιολογική σύνδεση για να εκτελέσετε το ίδιο ερώτημα που μεταβιβάσατε στο στοιχείο δεδομένων GX και απεικονίστε τις τιμές που προκύπτουν.
%%dax "Retail Analysis Sample PBIX"
EVALUATE SUMMARIZECOLUMNS(
'Time'[FiscalYear],
'Time'[FiscalMonth],
"Total Units Ratio", DIVIDE([Total Units This Year], [Total Units Last Year])
)
Αποθηκεύστε αυτά τα αποτελέσματα σε ένα DataFrame.
df = _
Σχεδιάστε τα αποτελέσματα.
import matplotlib.pyplot as plt
df["Total Units % Change YoY"] = (df["[Total Units Ratio]"] - 1)
df.set_index(["Time[FiscalYear]", "Time[FiscalMonth]"]).plot.bar(y="Total Units % Change YoY")
plt.axhline(0)
plt.axhline(-0.2, color="red", linestyle="dotted")
plt.axhline( 0.5, color="red", linestyle="dotted")
None
Από την πλοκή, μπορείτε να δείτε ότι ο Απρίλιος και ο Ιούλιος ήταν ελαφρώς εκτός περιοχής και, στη συνέχεια, μπορούν να προβούν σε περαιτέρω βήματα για διερεύνηση.
Αποθήκευση ρύθμισης παραμέτρων GX
Καθώς τα δεδομένα στο σύνολο δεδομένων σας αλλάζουν με την πάροδο του χρόνου, μπορεί να θέλετε να εκτελέσετε ξανά τις επικυρώσεις GX που μόλις εκτελέσατε. Προς το παρόν, το περιβάλλον δεδομένων (που περιέχει τα συνδεδεμένα data assets, τις οικογένειες προσδοκώμενων πελατών και το σημείο ελέγχου) ζει εφήμερα, αλλά μπορεί να μετατραπεί σε περιβάλλον αρχείου για μελλοντική χρήση. Εναλλακτικά, μπορείτε να δημιουργήσετε ένα περιβάλλον αρχείου (ανατρέξτε Να ξεκινήσει ένα περιβάλλον δεδομένων).
context = context.convert_to_file_context()
Τώρα που αποθηκεύσατε το περιβάλλον, αντιγράψτε τον κατάλογο gx
στο lakehouse σας.
Σημαντικός
Αυτό το κελί προϋποθέτει ότι προσθέσετε ένα lakehouse στο σημειωματάριο. Εάν δεν υπάρχει συνημμένη λίμνη, δεν θα δείτε σφάλμα, αλλά δεν θα μπορείτε αργότερα να λάβετε το περιβάλλον. Εάν προσθέσετε τώρα ένα lakehouse, ο πυρήνας θα επανεκκινηθεί, επομένως θα πρέπει να εκτελέσετε ξανά ολόκληρο το σημειωματάριο για να επιστρέψετε σε αυτό το σημείο.
# copy GX directory to attached lakehouse
!cp -r gx/ /lakehouse/default/Files/gx
Τώρα, μπορούν να δημιουργηθούν μελλοντικά περιβάλλοντα με context = gx.get_context(project_root_dir="<your path here>")
να χρησιμοποιήσετε όλες τις ρυθμίσεις παραμέτρων από αυτό το πρόγραμμα εκμάθησης.
Για παράδειγμα, σε ένα νέο σημειωματάριο, επισυνάψτε την ίδια λίμνη και χρησιμοποιήστε context = gx.get_context(project_root_dir="/lakehouse/default/Files/gx")
για να ανακτήσετε το περιβάλλον.
Σχετικό περιεχόμενο
Δείτε άλλα προγράμματα εκμάθησης για τη σημασιολογική σύνδεση / SemPy:
- Εκμάθηση : Καθαρισμός δεδομένων με λειτουργικές εξαρτήσεις
- Εκμάθηση : Ανάλυση λειτουργικών εξαρτήσεων σε ένα δείγμα μοντέλου σημασιολογίας
- Εκμάθηση : Εξαγωγή και υπολογισμός μετρήσεων Power BI από ένα σημειωματάριο Jupyter
- Εκμάθηση : Εντοπισμός σχέσεων σε ένα μοντέλο σημασιολογίας, χρησιμοποιώντας σημασιολογική σύνδεση
- Εκμάθηση : Εντοπισμός σχέσεων στο σύνολο δεδομένων Synthea, με χρήση σύνδεσης σημασιολογίας