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é 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á 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 a vyhledejte a vyberte 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ě fabric-samples na GitHubu a nahrajte je do svého pracovního prostoru.

Sledujte postup v poznámkovém bloku

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

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í funkce %pip 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. Naimportujte knihovnu pandas pro uplatnění konfigurační volby, 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 list_datasets SemPy 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
  • Vzorek ziskovosti zákazníků (auto): stejná data, ale relace jsou omezené na ty, které by Power BI automaticky detekoval.

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

  1. Načíst relace, které jsou předdefinovány a uloženy v sémantickém modelu Customer Profitability Sample, pomocí funkce list_relationships SemPy. Tato funkce obsahuje seznam z tabulkového objektového modelu:

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

    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.

Objevování doplňkových vztahů

Pokud jste začali s relacemi, které Power BI automaticky detekovaly, měla 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 zmeš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 tabulkou Industry. Pomocí těchto informací odeberte tyto řádky.

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

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

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

  4. Vizualizujte 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í list_tables a read_table z nástroje SemPy.

    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 prohlédněte si 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 ze sémantického modelu Ukázka ziskovosti zákazníků.

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Pomocí funkce list_relationship_violations zkontrolujte, jestli se hodnoty primárního a cizího klíče překrývají. Zadejte výstup funkce list_relationships 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 v Fact[Product Key] není v Product[Product Key]přítomna a tento chybějící klíč je 50.

Průzkumná analýza dat je vzrušující proces, a také je čištění dat. Vždy existuje něco, co data skrývají, v závislosti na tom, jak se na ně díváte, na co se chcete zeptat a podobně. 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: