Jaa


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

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

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

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

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

Piirto 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ä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ä.

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