Oktatóanyag: Funkcionális függőségek elemzése szemantikai modellben
Ebben az oktatóanyagban egy Power BI-elemző által végzett, szemantikai modellek (Power BI-adathalmazok) formájában tárolt előzetes munkára épít. A SemPy (előzetes verzió) a Synapse Adattudomány microsoft fabricbeli felületén való használatával elemezheti a DataFrame oszlopaiban található funkcionális függőségeket. Ez az elemzés segít felderíteni a nemtriviális adatminőséggel kapcsolatos problémákat, hogy pontosabb megállapításokat nyerjen.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Használjon tartományismeretet a szemantikai modell funkcionális függőségeiről szóló hipotézisek megfogalmazásához.
- Ismerkedjen meg a Szemantic Link Python-kódtárának (SemPy) összetevőivel, amelyek támogatják a Power BI-val való integrációt, és segítenek az adatminőség-elemzés automatizálásában. Ezek az összetevők a következők:
- FabricDataFrame – egy pandas-szerű struktúra, amely további szemantikai információkkal bővül.
- Hasznos függvények szemantikai modellek fabric-munkaterületről a jegyzetfüzetbe való lekéréséhez.
- Hasznos függvények, amelyek automatizálják a funkcionális függőségekkel kapcsolatos hipotézisek kiértékelését, és amelyek azonosítják a szemantikai modellek kapcsolatainak megsértését.
Előfeltételek
Microsoft Fabric-előfizetés lekérése. Vagy regisztráljon egy ingyenes Microsoft Fabric-próbaverzióra.
A kezdőlap bal oldalán található élménykapcsolóval válthat a Synapse Adattudomány felületre.
A munkaterület megkereséséhez és kijelöléséhez válassza a bal oldali navigációs panel munkaterületeit. Ez a munkaterület lesz az aktuális munkaterület.
Töltse le a Customer Profitability Sample.pbix szemantikai modellt a hálóminták GitHub-adattárából, és töltse fel a munkaterületre.
Követés a jegyzetfüzetben
A powerbi_dependencies_tutorial.ipynb jegyzetfüzet kíséri ezt az oktatóanyagot.
Az oktatóanyaghoz mellékelt jegyzetfüzet megnyitásához kövesse a Rendszer előkészítése adatelemzési oktatóanyagokhoz című témakör utasításait, és importálja a jegyzetfüzetet a munkaterületre.
Ha inkább erről a lapról másolja és illessze be a kódot, létrehozhat egy új jegyzetfüzetet.
A kód futtatása előtt mindenképpen csatoljon egy lakehouse-t a jegyzetfüzethez .
A jegyzetfüzet beállítása
Ebben a szakaszban egy jegyzetfüzet-környezetet állít be a szükséges modulokkal és adatokkal.
Telepítés
SemPy
a PyPI-ból a%pip
jegyzetfüzeten belüli helyszíni telepítési funkcióval:%pip install semantic-link
Végezze el a szükséges modulok importálását, amelyekre később szüksége lesz:
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Adatok betöltése és előfeldolgozása
Ez az oktatóanyag egy standard szemantikai mintamodellt használ, a Customer Profitability Sample.pbix-t. A szemantikai modell leírásáért lásd a Power BI ügyfél-jövedelmezőségi mintáját.
Töltse be a Power BI-adatokat a FabricDataFramesbe a SemPy függvényével
read_table
:dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()
Töltse be a táblát
State
egy FabricDataFrame-be:state = fabric.read_table(dataset, "State") state.head()
Bár a kód kimenete úgy néz ki, mint egy pandas DataFrame, valójában inicializált egy olyan adatstruktúrát,
FabricDataFrame
amely támogatja a pandason végzett néhány hasznos műveletet.Ellenőrizze a következő adattípust
customer
:type(customer)
A kimenet megerősíti, hogy
customer
ez a típus .' típusúsempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
.Csatlakozzon a
customer
dataFrame-ekhezstate
:customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Funkcionális függőségek azonosítása
A funkcionális függőségek egy-a-többhöz kapcsolatként nyilvánulnak meg a DataFrame két (vagy több) oszlopában lévő értékek között. Ezek a kapcsolatok az adatminőségi problémák automatikus észlelésére használhatók.
Futtassa a SemPy függvényét
find_dependencies
az egyesített DataFrame-en az oszlopok értékei közötti meglévő funkcionális függőségek azonosításához:dependencies = customer_state_df.find_dependencies() dependencies
Az azonosított függőségek vizualizációja a SemPy függvényével
plot_dependency_metadata
:plot_dependency_metadata(dependencies)
A vártnak megfelelően a funkcionális függőségek grafikonja azt mutatja, hogy az
Customer
oszlop meghatároz néhány oszlopot, példáulCity
: ,Postal Code
ésName
.Meglepő módon a gráf nem jelenít meg funkcionális függőséget
City
az ésPostal Code
között, valószínűleg azért, mert sok szabálysértés van az oszlopok közötti kapcsolatokban. A SemPy függvényévelplot_dependency_violations
megjelenítheti az egyes oszlopok közötti függőségek megsértését.
Az adatok megismerése minőségi problémák esetén
Diagram rajzolása SemPy vizualizációs függvényével
plot_dependency_violations
.customer_state_df.plot_dependency_violations('Postal Code', 'City')
A függőségi szabálysértések ábrázolása a bal oldalon lévő értékeket
Postal Code
, a jobb oldalon pedig az értékeketCity
jeleníti meg. Ha van egy sor, amely tartalmazza ezt a két értéket, a bal oldalon lévő él és aCity
jobb oldali oldal összekapcsoljaPostal Code
az egyiket. Az élek az ilyen sorok számával vannak széljegyzetekkel eljegyzve. Van például két sor 20004 irányítószámmal, az egyik az "Északi torony" várossal, a másik pedig "Washington" várossal.A diagram emellett néhány szabálysértést és sok üres értéket is tartalmaz.
Ellenőrizze a következőhöz tartozó
Postal Code
üres értékek számát:customer_state_df['Postal Code'].isna().sum()
50 sor rendelkezik irányítószám-azonosítóval.
Üres értékeket tartalmazó sorok elvetése. Ezután keresse meg a függőségeket a
find_dependencies
függvény használatával. Figyelje meg az extra paramétertverbose=1
, amely betekintést nyújt a SemPy belső működésébe:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)
A feltételes entrópia
Postal Code
City
és a 0,049. Ez az érték azt jelzi, hogy működési függőségi szabálysértések vannak. A szabálysértések kijavítása előtt emelje fel a feltételes entrópia küszöbértékét0.01
az alapértelmezett értékről a következőre, csak a függőségek megtekintéséhez0.05
. Az alacsonyabb küszöbértékek kevesebb függőséget (vagy nagyobb szelektivitást) eredményeznek.A feltételes entrópia küszöbértékének
0.01
növelése az alapértelmezett értékről a következőre0.05
:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
Ha tartományismeretet alkalmaz arra vonatkozóan, hogy melyik entitás határozza meg más entitások értékeit, ez a függőségi gráf pontosnak tűnik.
További, észlelt adatminőségi problémák megismerése. Például egy szaggatott nyíl csatlakozik
City
, ésRegion
azt jelzi, hogy a függőség csak hozzávetőleges. Ez a közelítő kapcsolat azt jelentheti, hogy részleges funkcionális függőség áll fenn.customer_state_df.list_dependency_violations('City', 'Region')
Tekintse meg közelebbről azokat az eseteket, amikor egy érvénytelen
Region
érték szabálysértést okoz:customer_state_df[customer_state_df.City=='Downers Grove']
Az eredmény azt mutatja, Downers Grove város előforduló Illinois és Nebraska. Downer's Grove azonban illinois-i város, nem Nebraska.
Tekintse meg Fremont városát:
customer_state_df[customer_state_df.City=='Fremont']
Van egy Fremont nevű város Kaliforniában. Texas esetében azonban a keresőmotor Premontot adja vissza, nem Fremontot.
Az is gyanús, hogy az eredeti függőségi szabálysértések pontozott vonala jelzi a függőségek közötti
Name
ésCountry/Region
közötti függőségek megsértését (mielőtt üres értékekkel dobná el a sorokat).customer_state_df.list_dependency_violations('Name', 'Country/Region')
Úgy tűnik, hogy egy ügyfél, az SDI Design két régióban van jelen : Egyesült Államok és Kanada. Ez az előfordulás nem lehet szemantikai szabálysértés, de lehet, hogy csak ritkán fordul elő. Mégis érdemes körülnézni:
Tekintse meg közelebbről az ügyfél SDI-tervezését:
customer_state_df[customer_state_df.Name=='SDI Design']
A további vizsgálatok azt mutatják, hogy valójában két különböző ügyfélről van szó (különböző iparágakból) ugyanazzal a névvel.
A feltáró adatelemzés izgalmas folyamat, és az adattisztítás is. Mindig van valami, amit az adatok rejtenek, attól függően, hogy hogyan tekinti meg, mit szeretne kérdezni, és így tovább. A szemantikai hivatkozás új eszközöket biztosít, amelyekkel többet érhet el az adataival.
Kapcsolódó tartalom
Tekintse meg a szemantikai hivatkozás / SemPy egyéb oktatóanyagait:
- Oktatóanyag: Adatok tisztítása funkcionális függőségekkel
- Oktatóanyag: Power BI-mértékek kinyerása és kiszámítása Jupyter-jegyzetfüzetből
- Oktatóanyag: Kapcsolatok felderítése szemantikai modellben szemantikai hivatkozás használatával
- Oktatóanyag: Kapcsolatok felderítése a Synthea-adatkészletben szemantikai hivatkozás használatával
- Oktatóanyag: Adatok ellenőrzése a SemPy és a Nagy elvárások (GX) használatával (előzetes verzió)