Sdílet prostřednictvím


Kurz: Zjišťování relací v sémantickém modelu pomocí sémantického odkazu

Tento kurz ukazuje, jak pracovat s Power BI z poznámkového bloku Jupyter a zjišťovat relace mezi tabulkami pomocí knihovny SemPy.

V tomto kurzu se naučíte:

  • Objevte relace v sémantickém modelu (datová sada Power BI) pomocí sémantického odkazu knihovny Pythonu (SemPy).
  • Používejte komponenty SemPy, které podporují integraci s Power BI a pomáhají automatizovat analýzu kvality dat. Mezi tyto komponenty patří:
    • FabricDataFrame – struktura podobná knihovně pandas rozšířená o další sémantické informace.
    • Funkce pro načítání sémantických modelů z pracovního prostoru Fabric do poznámkového bloku
    • Funkce, které automatizují vyhodnocení hypotéz o funkčních závislostech a identifikují porušení vztahů v sémantických modelech.

Požadavky

  • V levém navigačním podokně vyberte Pracovní prostory , abyste našli a vybrali pracovní prostor. Tento pracovní prostor se stane vaším aktuálním pracovním prostorem.

  • Stáhněte si sémantické modely Customer Profitability Sample.pbix a Customer Profitability Sample (auto).pbix z úložiště GitHub s ukázkami prostředků infrastruktury a nahrajte je do svého pracovního prostoru.

Sledování v poznámkovém bloku

Tento kurz doprovází poznámkový blok powerbi_relationships_tutorial.ipynb .

Pokud chcete otevřít doprovodný poznámkový blok pro tento kurz, postupujte podle pokynů v části Příprava systému na kurzy datových věd a importujte poznámkový blok do pracovního prostoru.

Pokud byste raději zkopírovali a vložili kód z této stránky, můžete vytvořit nový poznámkový blok.

Než začnete spouštět kód, nezapomeňte k poznámkovému bloku připojit lakehouse.

Nastavení poznámkového bloku

V této části nastavíte prostředí poznámkového bloku s potřebnými moduly a daty.

  1. Nainstalujte SemPy z PyPI pomocí %pip možnosti in-line instalace v poznámkovém bloku:

    %pip install semantic-link
    
  2. Proveďte nezbytné importy modulů SemPy, které budete potřebovat později:

    import sempy.fabric as fabric
    
    from sempy.relationships import plot_relationship_metadata
    from sempy.relationships import find_relationships
    from sempy.fabric import list_relationship_violations
    
  3. Import knihovny pandas pro vynucování možnosti konfigurace, která pomáhá s formátováním výstupu:

    import pandas as pd
    pd.set_option('display.max_colwidth', None)
    

Prozkoumání sémantických modelů

Tento kurz používá standardní ukázkový sémantický model Customer Profitability Sample.pbix. Popis sémantického modelu najdete v ukázce ziskovosti zákazníků pro Power BI.

  • Pomocí funkce SemPy list_datasets můžete prozkoumat sémantické modely v aktuálním pracovním prostoru:

    fabric.list_datasets()
    

Pro zbytek tohoto poznámkového bloku použijete dvě verze sémantického modelu Customer Profitability Sample:

  • Ukázka ziskovosti zákazníků: Sémantický model pocházející z ukázek Power BI s předdefinovanými relacemi mezi tabulkami
  • Ukázka ziskovosti zákazníků (auto): stejná data, ale relace jsou omezené na ty, které by Power BI automaticky rozdetekoval.

Extrahování ukázkového sémantického modelu s předdefinovaným sémantickým modelem

  1. Relace zatížení, které jsou předdefinované a uložené v sémantickém modelu Customer Profitability Sample pomocí funkce SemPy list_relationships . Tato funkce obsahuje seznam z tabulkového objektového modelu:

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Vizualizujte relationships datový rámec jako graf pomocí funkce SemPy plot_relationship_metadata :

    plot_relationship_metadata(relationships)
    

    Snímek obrazovky znázorňující graf relací mezi tabulkami v sémantickém modelu

Tento graf ukazuje "základní pravdu" pro relace mezi tabulkami v tomto sémantickém modelu, protože odráží, jak byly definovány v Power BI odborníkem na danou problematiku.

Doplňte zjišťování relací.

Pokud jste začali s relacemi, které Power BI automaticky rozdetekovaly, měli byste menší sadu.

  1. Vizualizujte relace, které Power BI automaticky rozdetekoval v sémantickém modelu:

    dataset = "Customer Profitability Sample (auto)"
    autodetected = fabric.list_relationships(dataset)
    plot_relationship_metadata(autodetected)
    

    Snímek obrazovky znázorňující relace, které Power BI automaticky rozdetekoval v sémantickém modelu

    Automatické rozpoznávání Power BI nezmeškalo mnoho relací. Kromě toho jsou dvě automaticky rozdetekované relace sémanticky nesprávné:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Vytiskněte relace jako tabulku:

    autodetected
    

    V řádcích s indexem 3 a 4 se zobrazí nesprávné relace s Industry tabulkou. Tyto informace slouží k odebrání těchto řádků.

  3. Zahoďte nesprávně identifikované relace.

    autodetected.drop(index=[3,4], inplace=True)
    autodetected
    

    Teď máte správné, ale neúplné relace.

  4. Vizualizovat tyto neúplné relace pomocí plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Snímek obrazovky znázorňující vizualizaci relací po odebrání nesprávných relací

  5. Načtěte všechny tabulky ze sémantického modelu pomocí funkcí a read_table funkcí SemPylist_tables:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Najděte relace mezi tabulkami pomocí find_relationshipsa zkontrolujte výstup protokolu, abyste získali přehled o tom, jak tato funkce funguje:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. Vizualizace nově zjištěných relací:

    plot_relationship_metadata(suggested_relationships_all)
    

    Snímek obrazovky znázorňující vizualizaci nově zjištěných relací

    SemPy dokázal rozpoznat všechny relace.

  8. Pomocí parametru exclude omezte vyhledávání na další relace, které nebyly dříve identifikovány:

    additional_relationships = find_relationships(
        tables,
        exclude=autodetected,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7
    )
    
    additional_relationships
    

Ověření relací

  1. Nejprve načtěte data z sémantického modelu Customer Profitability Sample :

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Pomocí funkce zkontrolujte, jestli se hodnoty primárního a cizího list_relationship_violations klíče překrývají. Zadejte výstup list_relationships funkce jako vstup do list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Porušení vztahů poskytují zajímavé přehledy. Například jedna ze sedmi hodnot Fact[Product Key] není přítomna Product[Product Key]a tento chybějící klíč je 50.

Průzkumná analýza dat je vzrušující proces, a proto je čištění dat. V závislosti na tom, jak se na ně díváte, co se chcete zeptat atd., je vždy něco, co se data skrývají. Sémantický odkaz poskytuje nové nástroje, které můžete použít k dosažení větších výsledků s vašimi daty.

Podívejte se na další kurzy pro sémantický odkaz / SemPy: