Zdieľať cez


Kurz: Analýza funkčných závislostí v sémantickom modeli

V tomto kurze staváte na predchádzajúcej práci, ktorú vykonal analytik služby Power BI a ktorá bola uložená vo forme sémantických modelov (množiny údajov služby Power BI). Pomocou semPy (Preview) v prostredí Synapse Data Science v rámci služby Microsoft Fabric sa analyzujú funkčné závislosti, ktoré existujú v stĺpcoch údajového rámca. Táto analýza pomáha zisťovať problémy s kvalitou netriviálnych údajov s cieľom získať presnejšie prehľady.

V tomto kurze sa naučíte:

  • Použite znalosti domény na formulovanie hypotéz o funkčných závislostiach v sémantickom modeli.
  • Oboznámte sa so súčasťami knižnice jazyka Python sémantických prepojení (SemPy), ktoré podporujú integráciu so službou Power BI a pomáhajú automatizovať analýzu kvality údajov. Medzi tieto súčasti patria:
    • FabricDataFrame – štruktúra pripomínaná pandas, vylepšená ďalšími sémantickými informáciami.
    • Užitočné funkcie na vyťahovanie sémantických modelov z pracovného priestoru služby Fabric do poznámkového bloku.
    • Užitočné funkcie, ktoré automatizujú vyhodnotenie hypotéz o funkčných závislostiach a ktoré identifikujú porušenia vzťahov v sémantických modeloch.

Predpoklady

  • Získajte predplatné služby Microsoft Fabric . Alebo si zaregistrujte bezplatnú skúšobnú služby Microsoft Fabric.

  • Prihláste sa do služby Microsoft Fabric.

  • Pomocou prepínača skúseností v ľavej dolnej časti domovskej stránky sa prepnete na službu Fabric.

    Snímka obrazovky ponuky prepínača prostredí zobrazujúca, kde vybrať položku Dátová veda.

  • Na ľavej navigačnej table vyberte položku Pracovné priestory a vyhľadajte a vyberte pracovný priestor. Tento pracovný priestor sa stane vaším aktuálnym pracovným priestorom.

  • Stiahnite si Customer Profitability Sample.pbix sémantický model z odkladacieho priestoruvzoriek štruktúry GitHub.

  • V pracovnom priestore vyberte položku Importovaťzostavu alebo stránkovanú zostavuZ tohto počítača a nahrajte súbor Customer Profitability Sample.pbix do pracovného priestoru.

Sledovanie v notebooku

Tento kurz sprevádza poznámkový blok powerbi_dependencies_tutorial.ipynb.

Nastavenie poznámkového bloku

V tejto časti nastavíte poznámkové prostredie s potrebnými modulmi a údajmi.

  1. Nainštalujte SemPy z rozhrania PyPI pomocou možnosti %pip vnorenej inštalácie v rámci poznámkového bloku:

    %pip install semantic-link
    
  2. Vykonajte potrebné importy modulov, ktoré budete potrebovať neskôr:

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

Načíta a predprodukuje údaje

V tomto kurze sa používa štandardný sémantický model ukážky Ukážka ziskovosti zákazníkov.pbix. Popis sémantického modelu nájdete v téme Ukážka ziskovosti zákazníkov prePower BI.

  1. Načítajte údaje služby Power BI do prvku FabricDataFrames pomocou funkcie read_table SemPy:

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. Načítajte tabuľku State do prvku FabricDataFrame:

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

    Zatiaľ čo výstup tohto kódu vyzerá ako údajový rámec pandas, v skutočnosti ste inicializovali štruktúru údajov s názvom FabricDataFrame, ktorá podporuje niektoré užitočné operácie na základe pandy.

  3. Skontrolujte typ údajov customer:

    type(customer)
    

    Výstup potvrdzuje, že customer má typ sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.'

  4. Pripojte sa k customer a state údajovým rámcom:

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

Identifikácia funkčných závislostí

Funkčná závislosť sa prejaví ako vzťah one-to-many medzi hodnotami v dvoch (alebo viacerých) stĺpcoch v rámci prvku DataFrame. Tieto vzťahy možno použiť na automatické zisťovanie problémov s kvalitou údajov.

  1. Spustite funkciu find_dependencies SemPy v zlúčenom prvku DataFrame na identifikáciu existujúcich funkčných závislostí medzi hodnotami v stĺpcoch:

    dependencies = customer_state_df.find_dependencies()
    dependencies
    
  2. Vizualizácia identifikovaných závislostí pomocou funkcie plot_dependency_metadata SemPy:

    plot_dependency_metadata(dependencies)
    

    Snímka obrazovky zobrazujúca vykreslenia metaúdajov závislosti.

    Graf funkčných závislostí podľa očakávania zobrazuje, že stĺpec Customer určuje niektoré stĺpce, napríklad City, Postal Codea Name.

    Prekvapivé je, že graf nezobrazuje funkčnú závislosť medzi City a Postal Code, pravdepodobne preto, že vzťahy medzi stĺpcami sú mnoho porušení. Funkciu plot_dependency_violations SemPy môžete použiť na vizualizáciu porušení závislostí medzi konkrétnymi stĺpcami.

Preskúmanie údajov s problémami s kvalitou

  1. Nakreslite graf pomocou funkcie plot_dependency_violations vizualizácie SemPy.

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

    Snímka obrazovky zobrazujúca vykreslenia porušení závislosti.

    Znázornenie porušení závislosti zobrazuje hodnoty pre Postal Code na ľavej strane a hodnoty pre City na pravej strane. Okraj prepája Postal Code na ľavej strane s City na pravej strane, ak existuje riadok, ktorý obsahuje tieto dve hodnoty. Okraje sú označené poznámkami s počtom takýchto riadkov. Existujú napríklad dva riadky s PSČ 20004, jeden s mestom Severná veža a druhý s mestom Washington.

    Vykresl sa navyše zobrazuje niekoľko porušení a mnoho prázdnych hodnôt.

  2. Potvrďte počet prázdnych hodnôt pre Postal Code:

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

    Pre PSČ je k dispozícii 50 riadkov.

  3. Riadky vysuňte s prázdnymi hodnotami. Potom vyhľadajte závislosti pomocou funkcie find_dependencies. Všimnite si ďalší parameter verbose=1, ktorý ponúka pohľad na interné fungovanie nástroja SemPy:

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

    Podmienková entropia pre Postal Code a City je 0,049. Táto hodnota označuje, že došlo k porušeniu funkčnej závislosti. Pred opravou porušenia, zvýšiť prah na podmienkovú entropiu z predvolenej hodnoty 0.01 na 0.05, len aby sa zobrazili závislosti. Nižšia prahová hodnota má za následok menej závislostí (alebo vyššiu selektivitu).

  4. Zvýšte prahovú hodnotu pri podmienenej entropii z predvolenej hodnoty 0.01 na 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    znázornenie metaúdajov závislosti s vyššou prahovou hodnotou pre entropiu.

    Ak použijete znalosti domény, ktorá entita určuje hodnoty iných entít, tento graf závislostí sa zdá byť presný.

  5. Preskúmajte ďalšie zistené problémy s kvalitou údajov. Napríklad prerušovaná šípka sa spojí City a Region, čo označuje, že závislosť je len približná. Z tohto približného vzťahu môže vyplývať, že existuje čiastočná funkčná závislosť.

    customer_state_df.list_dependency_violations('City', 'Region')
    
  6. Pozrite sa bližšie na každý prípad, v ktorom nonempty Region hodnota spôsobuje porušenie:

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

    Výsledok ukazuje, downers Grove mesto sa vyskytuje v Illinois a Nebraska. Avšak, Downer grove je mesto v Illinois, nie Nebraska.

  7. Pozrite sa na mesto Fremont:

    customer_state_df[customer_state_df.City=='Fremont']
    

    Je tu mesto s názvom Fremont v Kalifornii,. Avšak, pre Texas, vyhľadávač vráti Premont, nie Fremont.

  8. Je tiež podozrivé vidieť porušenie závislosti medzi Name a Country/Region, čo je značené bodkovanou čiarou v pôvodnom grafe porušenia závislosti (pred pádom riadkov s prázdnymi hodnotami).

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

    Zdá sa, že jeden zákazník, návrh SDI, sa nachádza v dvoch oblastiach – v Spojených štátoch a Kanade. Tento výskyt nemusí byť sémantické porušenie, ale môže byť len neobvyklý prípad. Napriek tomu stojí za to pozrieť sa zblízka:

  9. Pozrite sa bližšie nanávrhu zákazníka SDI:

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

    Z ďalšej kontroly vyplýva, že ide v skutočnosti o dvoch rôznych zákazníkov (z rôznych odvetví) s rovnakým názvom.

Prieskumná analýza údajov je vzrušujúci proces, a tak iste čistenie údajov. Údaje sa vždy skrývajú v závislosti od toho, ako sa na ne pozriete, čo sa chcete opýtať a tak ďalej. Sémantické prepojenie poskytuje nové nástroje, ktoré môžete použiť na dosiahnutie viac obsahu s údajmi.

Pozrite si ďalšie kurzy o sémantických prepojeniach/SemPy: