Jaa


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 .

  • Kirjaudu sisään Microsoft Fabric .

  • Vaihda Fabriciin aloitussivun vasemmassa alakulmassa olevan käyttökokemuksen vaihtajan avulla.

    Näyttökuva käyttökokemuksen vaihtajavalikosta, jossa näkyy, missä datatiede valitaan.

  • 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.

Muistikirjan asettaminen

Tässä osiossa määrität muistikirjaympäristön, joka sisältää tarvittavat moduulit ja tiedot.

  1. Asenna SemPy ja tarvittavat Great 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
  1. 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

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"]]

Taulukko näyttää vahvistuksen tulokset.

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])
)

Taulukko näyttää DAX-kyselyyhteenvedon tulokset.

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

Plot näyttää DAX-kyselyyhteenvedon tulokset.

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.

Katso muut opetusohjelmat semanttisesta linkistä /SemPy:stä: