Opetusohjelma: Tietojen vahvistaminen semPy-toiminnolla ja suurilla odotuksilla (GX)
Tässä opetusohjelmassa opit käyttämään SemPyä yhdessä Great Expectations (GX) kanssa tietojen vahvistamiseen Power BI:n semanttisissa malleissa.
Tässä opetusohjelmassa opit
- Vahvista Fabric-työtilan tietojoukon rajoitteet Suuren odotuksen Fabric-tietolähteellä (perustuu semanttiseen linkkiin).
- Määritä GX-tietokonteksti, tietoresurssit ja odotukset.
- Tarkastele vahvistustuloksia GX-tarkistuspisteen avulla.
- Analysoi raakadata semanttisen linkin avulla.
Edellytykset
Hanki Microsoft Fabric -tilaus. Voit myös rekisteröityä microsoft fabric -kokeiluversion maksuttomaan .
Vaihda Fabriciin aloitussivun vasemmassa alakulmassa olevan käyttökokemuksen vaihtajan avulla.
- Valitse Työtilat vasemmasta siirtymisruudusta työtilan hakemiseksi ja valitsemiseksi. Tästä työtilasta tulee nykyinen työtilasi.
- Lataa jälleenmyyntianalyysimallin PBIX.pbixtiedosto.
- Valitse työtilassa Tuo>raportti tai Sivutettu raportti ->Tästä tietokoneesta, lataa Jälleenmyyntianalyysimalli PBIX.pbix--tiedosto työtilaasi.
Seuraa mukana muistikirjassa
great_expectations_tutorial.ipynb on muistikirja, joka on tämän opetusohjelman mukana.
Jos haluat avata tämän opetusohjelman liitteenä olevan muistikirjan, noudata ohjeita kohdassa Valmistele järjestelmäsi datatiedeopetusohjelmia varten muistikirjan tuomiseksi työtilaasi.
Jos haluat kopioida ja liittää koodin tältä sivulta, voit luoda uuden muistikirjan.
Muista liittää muistikirjaan lakehouse- ennen kuin aloitat koodin suorittamisen.
Muistikirjan asettaminen
Tässä osiossa määrität muistikirjaympäristön, joka sisältää tarvittavat moduulit ja tiedot.
- Asenna
SemPy
ja tarvittavatGreat Expectations
-kirjastot PyPI:stä käyttämällä muistikirjan sisäisen%pip
asennusominaisuutta.
# install libraries
%pip install semantic-link 'great-expectations<1.0' great_expectations_experimental great_expectations_zipcode_expectations
# load %%dax cell magic
%load_ext sempy
- Suorita myöhemmin tarvittavien moduulien tuonti:
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-tietokontekstin ja tietolähteen määrittäminen
Jotta pääset alkuun suurilla odotuksilla, sinun on ensin määritettävä GX-Data Context. Konteksti toimii aloituspisteenä GX-toiminnoille ja sisältää kaikki olennaiset kokoonpanot.
context = gx.get_context()
Voit nyt lisätä Fabric-tietojoukkosi tähän kontekstiin Tietolähde- aloittaa vuorovaikutuksen tietojen kanssa. Tässä opetusohjelmassa käytetään vakiomuotoista semanttista Power BI -mallia, Jälleenmyyntianalyysimallin .pbix-tiedosto.
ds = context.sources.add_fabric_powerbi("Retail Analysis Data Source", dataset="Retail Analysis Sample PBIX")
Tietoresurssien määritys
Määritä Tietoresurssit-, jos haluat määrittää niiden tietojen alijoukon, joita haluat käsitellä. Resurssi voi olla yhtä yksinkertainen kuin täydet taulukot tai yhtä monimutkainen kuin mukautetut Data Analysis Expressions (DAX) -kyselyt.
Tässä lisäät useita resursseja:
- Power BI -taulukko
- Power BI -mittari
- Mukautettu DAX-kysely
- Dynamic Management View (DMV) -kysely
Power BI -taulukko
Lisää Power BI -taulukko tietoresurssina.
ds.add_powerbi_table_asset("Store Asset", table="Store")
Power BI -mittari
Jos tietojoukkosi sisältää esimääritettyjä mittareita, voit lisätä mittarit resursseiksi, jotka seuraavat vastaavaa ohjelmointirajapintaa kuin SemPy:n evaluate_measure
.
ds.add_powerbi_measure_asset(
"Total Units Asset",
measure="TotalUnits",
groupby_columns=["Time[FiscalYear]", "Time[FiscalMonth]"]
)
DAX
Jos haluat määrittää omia mittareita tai hallita tarkemmin tiettyjä rivejä, voit lisätä DAX-resurssin mukautetulla DAX-kyselyllä. Tässä määritämme Total Units Ratio
mittarin jakamalla kaksi olemassa olevaa mittaria.
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-kysely
Joissain tapauksissa voi olla hyödyllistä käyttää Dynamic Management View (DMV) -laskelmia osana tietojen tarkistusprosessia. Voit esimerkiksi seurata viite-eheysrikkomusten määrää tietojoukossasi. Lisätietoja on kohdassa Tietojen siistiminen = raporttien nopeuttaminen.
ds.add_powerbi_dax_asset(
"Referential Integrity Violation",
dax_string=
"""
SELECT
[Database_name],
[Dimension_Name],
[RIVIOLATION_COUNT]
FROM $SYSTEM.DISCOVER_STORAGE_TABLES
"""
)
Odotukset
Jos haluat lisätä tiettyjä rajoitteita resursseissa, sinun on ensin määritettävä Expectation Suites. Kun olet lisännyt jokaiseen ohjelmistoon yksittäiset odotukset, voit päivittää tietokontekstin, joka on määritetty alussa uudella ohjelmistolla. Täydellinen luettelo käytettävissä olevista odotuksista on GX-odotusvalikoiman.
Aloita lisäämällä "Retail Store Suite", jolla on kaksi odotuksia:
- kelvollinen postinumero
- taulukko, jonka rivimäärä on 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
mittari
Lisää Jälleenmyyntimittaripaketti, jolla on yksi odotus:
- Sarakearvojen on oltava suurempia kuin 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)
DAXin Total Units Ratio
Lisää Jälleenmyynti-DAX-ohjelmistopaketti, jolla on yksi odotus:
- Yksiköitä yhteensä -suhteen sarakearvojen tulee olla välillä 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)
Viite-eheyden rikkomukset (DMV)
Lisää Jälleenmyynti-DMV-ohjelmistopaketti, jolla on yksi odotus:
- RIVIOLATION_COUNT tulee olla 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)
Validointi
Jotta voit tosiasiallisesti suorittaa määritetyt odotukset tietoja vastaan, luo ensin Checkpoint- ja lisää se kontekstiin. Lisätietoja Tarkistuspisteen määrityksestä on kohdassa Tietojen vahvistustyönkulku.
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
)
Suorita nyt tarkistuspiste ja poimi tulokset pandas DataFrame -nimellä yksinkertaista muotoilua varten.
result = checkpoint.run()
Käsittele ja tulosta tuloksia.
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"]]
Näistä tuloksista näet, että kaikki odotuksesi läpäisivät vahvistuksen lukuun ottamatta "Yksiköiden kokonaismäärän vuosittaista resurssia", jonka määritit mukautetun DAX-kyselyn kautta.
Diagnostiikka
Semanttisen linkin avulla voit noutaa lähdetiedot, jotta ymmärrät, mitkä vuodet ovat alueen ulkopuolella. Semanttinen linkki tarjoaa sisäisen taian DAX-kyselyiden suorittamiseen. Semanttisen linkin avulla voit suorittaa saman kyselyn, jonka välitit GX-tietojen resurssiin, ja visualisoida tuloksena saatavat arvot.
%%dax "Retail Analysis Sample PBIX"
EVALUATE SUMMARIZECOLUMNS(
'Time'[FiscalYear],
'Time'[FiscalMonth],
"Total Units Ratio", DIVIDE([Total Units This Year], [Total Units Last Year])
)
Tallenna nämä tulokset DataFrame-kehyksessä.
df = _
Tulosta tulokset.
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
Kaaviosta voit nähdä, että huhtikuu ja heinäkuu olivat hieman alueen ulkopuolella, ja voit sitten ryhtyä lisätoimiin tutkiaksesi asiaa.
GX-määrityksen tallentaminen
Kun tietojoukkosi tiedot muuttuvat ajan kuluessa, haluat ehkä suorittaa juuri suorittamasi GX-vahvistukset uudelleen. Tällä hetkellä tietokonteksti (joka sisältää yhdistetyt tietoresurssit, odotuspaketit ja tarkistuspisteet) elää tavullisesti, mutta se voidaan muuntaa tiedostokontekstiksi tulevaa käyttöä varten. Vaihtoehtoisesti voit alustaa Tiedostokontekstin (katso Tietokontekstin alustaminen).
context = context.convert_to_file_context()
Nyt kun tallensit kontekstin, kopioi gx
-hakemisto lakehouse-hakemistoosi.
Tärkeä
Tässä solussa oletetaan, lisäsit muistikirjaan lakehouse-. Jos Lakehouse-sovellusta ei ole liitetty, et näe virhettä, mutta et myöskään saa myöhemmin kontekstia. Jos lisäät lakehousen nyt, ydin käynnistyy uudelleen, joten sinun on suoritettava koko muistikirja uudelleen, jotta pääset takaisin tähän pisteeseen.
# copy GX directory to attached lakehouse
!cp -r gx/ /lakehouse/default/Files/gx
Nyt tulevia konteksteja voidaan luoda context = gx.get_context(project_root_dir="<your path here>")
avulla, jotta voit käyttää kaikkia tämän opetusohjelman määrityksiä.
Esimerkiksi uudessa muistikirjassa liitä sama lakehouse ja nouda konteksti context = gx.get_context(project_root_dir="/lakehouse/default/Files/gx")
avulla.
Aiheeseen liittyvä sisältö
Katso muut opetusohjelmat semanttisesta linkistä /SemPy:stä:
- opetusohjelma: Tietojen siistiminen toiminnallisilla riippuvuuksilla
- opetusohjelma: semanttisen mallin toiminnallisten riippuvuuksien analysointi
- opetusohjelma: Poimi ja laske Power BI -mittareita Jupyter-muistikirjasta
- opetusohjelma: Suhteiden etsiminen semanttisesta mallista semanttisen linkin
- opetusohjelma: Suhteiden etsiminen Synthea -tietojoukosta semanttisen linkin