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.
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
sémantický model z odkladacieho priestoruCustomer Profitability Sample.pbix vzoriek štruktúry GitHub. V pracovnom priestore vyberte položku
Importovať zostavu alebo stránkovanú zostavu Z tohto počítača a nahrajtesúbor Customer Profitability Sample.pbix do pracovného priestoru.
Sledovanie v notebooku
Tento kurz sprevádza poznámkový blok
Ak chcete otvoriť sprievodný poznámkový blok pre tento kurz, postupujte podľa pokynov v téme Príprava systému na kurzy dátových vied na import notebooku do pracovného priestoru.
Ak by ste radšej skopírovali a prilepili kód z tejto stránky, môžete vytvoriť nový poznámkový blok.
Uistite sa, že pripojiť lakehouse k notebooku, ako začnete bežať kód.
Nastavenie poznámkového bloku
V tejto časti nastavíte poznámkové prostredie s potrebnými modulmi a údajmi.
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
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.
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()
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.Skontrolujte typ údajov
customer
:type(customer)
Výstup potvrdzuje, že
customer
má typsempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
.'Pripojte sa k
customer
astate
ú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.
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
Vizualizácia identifikovaných závislostí pomocou funkcie
plot_dependency_metadata
SemPy:plot_dependency_metadata(dependencies)
Graf funkčných závislostí podľa očakávania zobrazuje, že stĺpec
Customer
určuje niektoré stĺpce, napríkladCity
,Postal Code
aName
.Prekvapivé je, že graf nezobrazuje funkčnú závislosť medzi
City
aPostal Code
, pravdepodobne preto, že vzťahy medzi stĺpcami sú mnoho porušení. Funkciuplot_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
Nakreslite graf pomocou funkcie
plot_dependency_violations
vizualizácie SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Znázornenie porušení závislosti zobrazuje hodnoty pre
Postal Code
na ľavej strane a hodnoty preCity
na pravej strane. Okraj prepájaPostal Code
na ľavej strane sCity
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.
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.
Riadky vysuňte s prázdnymi hodnotami. Potom vyhľadajte závislosti pomocou funkcie
find_dependencies
. Všimnite si ďalší parameterverbose=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
aCity
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 hodnoty0.01
na0.05
, len aby sa zobrazili závislosti. Nižšia prahová hodnota má za následok menej závislostí (alebo vyššiu selektivitu).Zvýšte prahovú hodnotu pri podmienenej entropii z predvolenej hodnoty
0.01
na0.05
:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
Ak použijete znalosti domény, ktorá entita určuje hodnoty iných entít, tento graf závislostí sa zdá byť presný.
Preskúmajte ďalšie zistené problémy s kvalitou údajov. Napríklad prerušovaná šípka sa spojí
City
aRegion
, č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')
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.
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.
Je tiež podozrivé vidieť porušenie závislosti medzi
Name
aCountry/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:
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.
Súvisiaci obsah
Pozrite si ďalšie kurzy o sémantických prepojeniach/SemPy:
- Kurz: Vyčistenie údajov pomocou funkčných závislostí
- Kurz: Extrahovanie a výpočet mierok v službe Power BI z notebooku Jupyter
- Kurz: Zisťovanie vzťahov v sémantickom modeli pomocou sémantického prepojenia
- Kurz: Zisťovanie vzťahov v množine údajov Synthea pomocou sémantického prepojenia
- kurz : Overenie údajov pomocou semPy a veľkých očakávaní (GX)