Sdílet prostřednictvím


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

V tomto kurzu se dozvíte, jak pomocí poznámkového bloku Jupyter pracovat s Power BI a zjišťovat relace mezi tabulkami s knihovnou 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é se integrují s Power BI a automatizují analýzu kvality dat. Mezi tyto komponenty patří:
    • FabricDataFrame - struktura podobná knihovně pandas vylepšená sémantickými informacemi
    • Funkce, které načítá sémantické modely z pracovního prostoru Fabric do poznámkového bloku
    • Funkce, které testuje funkční závislosti a identifikují porušení vztahů v sémantických modelech

Požadavky

  • V navigačním podokně přejděte na Pracovní prostory a vyberte pracovní prostor, který chcete nastavit jako aktuální pracovní prostor.

  • 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 pak je nahrajte do svého pracovního prostoru.

Sledujte postup v poznámkovém bloku

Postupujte podle pokynů v poznámkovém bloku powerbi_relationships_tutorial.ipynb .

Nastavení poznámkového bloku

Nastavte prostředí poznámkového bloku s potřebnými moduly a daty.

  1. semantic-link Nainstalujte balíček z PyPI pomocí %pip vloženého příkazu v poznámkovém bloku.

    %pip install semantic-link
    
  2. Importujte sempy moduly, které použijete 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. Importujte knihovnu pandas a nastavte možnost zobrazení pro formátování výstupu.

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

## Explore semantic models

This tutorial uses the Customer Profitability Sample semantic model [_Customer Profitability Sample.pbix_](https://github.com/microsoft/fabric-samples/blob/main/docs-samples/data-science/datasets/Customer%20Profitability%20Sample.pbix). Learn about the semantic model in [Customer Profitability sample for Power BI](/power-bi/create-reports/sample-customer-profitability).

- Use SemPy's `list_datasets` function to explore semantic models in your current workspace:

  ```python
  fabric.list_datasets()

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

  • Ukázka ziskovosti zákazníků: sémantický model, jak je uvedeno v ukázkách 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é Power BI automaticky dedektuje

Extrahování předdefinovaných relací z ukázkového sémantického modelu

  1. Načtěte předdefinované relace v sémantickém modelu Ukázka ziskovosti zákazníků pomocí funkce SemPy list_relationships . Funkce obsahuje seznam relací z tabulkového objektového modelu (TOM).

    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 s grafem relací mezi tabulkami v sémantickém modelu

    Tento graf zobrazuje relace mezi tabulkami v tomto sémantickém modelu, jak je definováno v Power BI odborníkem na danou problematiku.

Zjišťování dalších relací

Pokud začnete s relacemi, které Power BI automaticky dedektuje, máte 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 s relacemi, které Power BI automaticky rozdetekoval v sémantickém modelu

    Automatické rozpoznávání Power BI vynechá mnoho relací. Dvě automaticky rozdetekované relace jsou také sémanticky nesprávné:

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

    autodetected
    

    Řádky 3 a 4 zobrazují nesprávné relace s tabulkou Industry . Odeberte tyto řádky.

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

    # Remove rows 3 and 4 which point incorrectly to Industry[ID]
    autodetected = autodetected[~autodetected.index.isin([3, 4])]
    

    Teď máte správné, ale neúplné relace. Vizualizujte tyto neúplné relace pomocí plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Snímek obrazovky vizualizace relací po odebrání nesprávných relací

  4. Načtěte všechny tabulky ze sémantického modelu pomocí funkcí a funkcí SemPy list_tables a read_table vyhledejte relace mezi tabulkami pomocí find_relationships. Projděte si výstup protokolu a získejte 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
    )
    
  5. Vizualizace nově zjištěných relací:

    plot_relationship_metadata(suggested_relationships_all)
    

    Snímek obrazovky s vizualizací nově zjištěných relací

    SemPy detekuje všechny relace.

  6. 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. Zkontrolujte, jestli se primární a cizí klíč překrývají s list_relationship_violations funkcí. Předejte výstup list_relationships funkce do list_relationship_violations.

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Výsledky odhalí užitečné přehledy. Například jedna ze sedmi hodnot Fact[Product Key] není přítomna Product[Product Key]a chybějící klíč je 50.

    Průzkumná analýza dat a čištění dat jsou iterativní. To, co se naučíte, závisí na vašich otázkách a na tom, jak prozkoumáte data. Sémantický odkaz přidává nástroje, které vám pomůžou s vašimi daty dělat víc.

Prozkoumejte další kurzy pro sémantický odkaz a SemPy:

\n\n