Opetusohjelma: Tietojen vahvistaminen semPy-toiminnolla ja suurilla odotuksilla (GX)
Tässä opetusohjelmassa opit käyttämään SemPyä yhdessä Suurten odotusten (GX) kanssa tietojen vahvistamiseen Semanttisissa Power BI -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ä ilmaiseen Microsoft Fabric -kokeiluversioon.
Siirry Synapse Data Science -käyttökokemukseen aloitussivun vasemmassa reunassa olevan käyttökokemuksen vaihtajan avulla.
- Etsi ja valitse työtila valitsemalla vasemmasta siirtymisruudusta Työtilat . Tästä työtilasta tulee nykyinen työtilasi.
- Lataa Jälleenmyyntianalyysimalli.pbix-tiedosto.
- Lataa Jälleenmyyntianalyysimalli PBIX.pbix-tiedosto työtilaan lataamalla se työtilassa Lataa-painikkeella.
Seuraa mukana muistikirjassa
great_expectations_tutorial.ipynb on tämän opetusohjelman mukana tuleva muistikirja.
Jos haluat avata tämän opetusohjelman liitteenä olevan muistikirjan, tuo muistikirja työtilaasi noudattamalla ohjeita kohdassa Järjestelmän valmisteleminen datatieteen opetusohjelmia varten.
Jos haluat kopioida ja liittää koodin tältä sivulta, voit luoda uuden muistikirjan.
Muista liittää lakehouse muistikirjaan 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ä%pip
muistikirjan sisäinen asennusominaisuus.
# install libraries
%pip install semantic-link great-expectations 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-tietokonteksti. 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ähteenä, jotta voit aloittaa tietojen käsittelemisen. Tässä opetusohjelmassa käytetään vakiomuotoista Power BI:n semanttista jälleenmyyntianalyysimallin .pbix-tiedostoa.
ds = context.sources.add_fabric_powerbi("Retail Analysis Data Source", dataset="Retail Analysis Sample PBIX")
Tietoresurssien määritys
Määritä tietoresurssit ja määritä niiden tietojen alijoukko, 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, 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 mittarin Total Units Ratio
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) -laskutoimituksia osana tietojen vahvistusprosessia. 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ä rajoituksia resursseissa, sinun on ensin määritettävä odotuspaketit. Kun olet lisännyt yksittäiset odotukset kuhunkin ohjelmistoon, voit päivittää tietojen kontekstin, joka on määritetty alussa uudella ohjelmistolla. Täydellinen luettelo käytettävissä olevista odotuksista on GX-odotusvalikoimassa.
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
Toimenpide
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)
Total Units Ratio
DAX
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)
Vahvistus
Jotta voit tosiasiallisesti suorittaa määritetyt odotukset tietoja vasten, luo ensin Tarkistuspiste ja lisää se kontekstiin. Lisätietoja Tarkistuspisteen määrityksestä on kohdassa Tietojen vahvistuksen työ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ämä solu olettaa, että lisäsit muistikirjaan lakehousen . 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 voit luoda -sovelluksen avulla context = gx.get_context(project_root_dir="<your path here>")
tulevia konteksteja, joissa voidaan käyttää kaikkia tämän opetusohjelman määrityksiä.
Esimerkiksi uudessa muistikirjassa liitä sama lakehouse ja nouda konteksti käyttämällä context = gx.get_context(project_root_dir="/lakehouse/default/Files/gx")
sitä.
Liittyvä sisältö
Katso muut opetusohjelmat semanttisesta linkistä /SemPy:stä:
- Opetusohjelma: Funktionaalisia riippuvuuksia sisältävien tietojen siistiminen
- Opetusohjelma: semanttisen malliesimerkkien toiminnallisten riippuvuuksien analysointi
- Opetusohjelma: Poimi ja laske Power BI -mittareita Jupyter-muistikirjasta
- Opetusohjelma: Suhteiden etsiminen semanttisessa mallissa semanttisen linkin avulla
- Opetusohjelma: Synthea-tietojoukon suhteiden etsiminen semanttisen linkin avulla
Palaute
https://aka.ms/ContentUserFeedback.
Tulossa pian: Vuoden 2024 aikana poistamme asteittain GitHub Issuesin käytöstä sisällön palautemekanismina ja korvaamme sen uudella palautejärjestelmällä. Lisätietoja on täällä:Lähetä ja näytä palaute kohteelle