Sdílet prostřednictvím


Kurz: Analýza funkčních závislostí v sémantickém modelu

V tomto kurzu vycházíte z práce analytika Power BI, který je uložený jako sémantické modely (datové sady Power BI). Pomocí SemPy (Preview) v prostředí Pro datové vědy Synapse v Microsoft Fabric analyzujete funkční závislosti ve sloupcích datového rámce. Tato analýza vám pomůže odhalit drobné problémy s kvalitou dat, abyste získali přesnější přehledy.

V tomto kurzu se naučíte:

  • Využijte znalosti domény k formulaci hypotéz o funkčních závislostech v sémantickém modelu.
  • Seznamte se s komponentami knihovny Pythonu se sémantic Linkem (SemPy), které se integrují s Power BI a pomáhají automatizovat analýzu kvality dat. Mezi tyto komponenty patří:
    • FabricDataFrame – struktura podobná knihovně pandas vylepšená o další sémantické informace
    • Funkce, které načítá sémantické modely z pracovního prostoru Fabric do poznámkového bloku
    • Funkce, které vyhodnocují hypotézy funkčních závislostí a identifikují porušení vztahů v sémantických modelech

Požadavky

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

  2. Stáhněte si soubor Customer Profitability Sample.pbix z úložiště GitHub s ukázkami prostředků infrastruktury.

  3. V pracovním prostoru vyberte Importovat sestavu>nebo stránkovanou sestavu>Z tohoto počítače nahrát soubor Customer Profitability Sample.pbix do pracovního prostoru.

Sledujte v poznámkovém bloku

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

Nastavení poznámkového bloku

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

  1. Slouží %pip k instalaci SemPy z PyPI v poznámkovém bloku.

    %pip install semantic-link
    
  2. Importujte potřebné moduly.

    import sempy.fabric as fabric
    from sempy.dependencies import plot_dependency_metadata
    

Načtení a předběžné zpracování dat

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.

  1. Načtěte data Power BI do FabricDataFramefabric.read_table funkce.

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. State Načtěte tabulku do tabulky FabricDataFrame.

    state = fabric.read_table(dataset, "State")
    state.head()
    

    I když výstup vypadá jako datový rámec pandas, tento kód inicializuje datovou strukturu nazvanou FabricDataFrame a přidává operace nad pandas.

  3. Zkontrolujte datový typ customer.

    type(customer)
    

    Výstup ukazuje, že customer je sempy.fabric._dataframe._fabric_dataframe.FabricDataFrameto .

  4. Spojte objekty customer a stateDataFrame objekty.

    customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left')
    customer_state_df.head()
    

Identifikace funkčních závislostí

Funkční závislost je vztah 1:N mezi hodnotami ve dvou nebo více sloupcích v objektu DataFrame. Pomocí těchto relací můžete automaticky zjišťovat problémy s kvalitou dat.

  1. Spuštěním funkce SemPy find_dependencies ve sloučeném DataFrame souboru identifikujte funkční závislosti mezi hodnotami sloupců.

    dependencies = customer_state_df.find_dependencies()
    dependencies
    
  2. Vizualizujte závislosti pomocí funkce SemPy plot_dependency_metadata .

    plot_dependency_metadata(dependencies)
    

    Snímek obrazovky s grafem metadat závislostí

    Graf funkčních závislostí ukazuje, že Customer sloupec určuje sloupce jako City, Postal Codea Name.

    Graf nezobrazuje funkční závislost mezi City sloupci a Postal Code, pravděpodobně proto, že mezi sloupci existuje mnoho porušení. Pomocí funkce SemPy plot_dependency_violations můžete vizualizovat porušení závislostí mezi konkrétními sloupci.

Prozkoumejte data kvůli problémům s kvalitou

  1. Nakreslete graf pomocí plot_dependency_violations vizualizační funkce SemPy.

    customer_state_df.plot_dependency_violations('Postal Code', 'City')
    

    Snímek obrazovky s grafem zobrazícím porušení závislostí

    Graf porušení závislostí zobrazuje hodnoty pro Postal Code levou stranu a hodnoty pro City pravou stranu. Hrana spojuje Postal Code na levé straně s City na pravé straně, pokud je řádek obsahující tyto dvě hodnoty. Hrany jsou opatřeny poznámkami s počtem takových řádků. Například existují dva řádky s PSČ 20004, jeden s městem "North Tower" a druhý s městem "Washington".

    Graf také zobrazuje několik porušení a mnoho prázdných hodnot.

  2. Potvrďte počet prázdných hodnot pro Postal Code:

    customer_state_df['Postal Code'].isna().sum()
    

    50 řádků má pro Postal Code.

  3. Odstraňte řádky s prázdnými hodnotami. Potom pomocí funkce find_dependencies vyhledejte závislosti. Všimněte si dodatečného parametru verbose=1, který nabízí přehled o vnitřních činnostech SemPy:

    customer_state_df2=customer_state_df.dropna()
    customer_state_df2.find_dependencies(verbose=1)
    

    Podmíněná entropie pro Postal Code a City je 0,049. Tato hodnota označuje, že došlo k narušení funkčních závislostí. Než tato porušení opravíte, zvyšte prahovou hodnotu podmíněné entropie z výchozí hodnoty 0.01 na 0.05, jen abyste viděli závislosti. Nižší prahové hodnoty vedou k menšímu počtu závislostí (nebo vyšší selektivitě).

  4. Zvýšení prahové hodnoty podmíněné entropie z výchozí hodnoty 0.01 na 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    Snímek obrazovky s grafem metadat závislostí s vyšší prahovou hodnotou entropie

    Pokud použijete znalosti domény o tom, která entita určuje hodnoty jiných entit, zdá se, že graf závislostí je přesný.

  5. Prozkoumejte další zjištěné problémy s kvalitou dat. Například přerušovaná šipka spojuje City a Region, což značí, že závislost je pouze přibližná. Tento přibližný vztah by mohl znamenat, že existuje částečná funkční závislost.

    customer_state_df.list_dependency_violations('City', 'Region')
    
  6. Podívejte se podrobněji na každý z případů, kdy neprázdná Region hodnota způsobuje narušení.

    customer_state_df[customer_state_df.City=='Downers Grove']
    

    Výsledek ukazuje město Downers Grove v Illinois a Nebraska. Downers Grove je však město v Illinois, ne Nebraska.

  7. Podívejte se na město Fremont:

    customer_state_df[customer_state_df.City=='Fremont']
    

    V Kaliforniije město označované jako Fremont. Pro Texas však vyhledávač vrátí Premont, ne Fremont.

  8. Je také podezřelé vidět porušení závislosti mezi Name a Country/Region, jak je označeno tečkovanou čárou v původním grafu porušení závislostí (před vyřazením řádků s prázdnými hodnotami).

    customer_state_df.list_dependency_violations('Name', 'Country/Region')
    

    Jeden zákazník, SDI Design, se zobrazuje ve dvou oblastech – Usa a Kanada. Tento případ nemusí být sémantické porušení, jen neobvyklé. Přesto stojí za to se podívat blízko:

  9. Podívejte se blíže na zákazníka SDI Design:

    customer_state_df[customer_state_df.Name=='SDI Design']
    

    Další kontrola ukazuje dva různé zákazníky z různých odvětví se stejným názvem.

Průzkumná analýza dat a čištění dat jsou iterativní. To, co najdete, závisí na vašich otázkách a perspektivě. Sémantický odkaz poskytuje nové nástroje, které vám umožní získat více dat.

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