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ó) használatával a Microsoft Fabric Synapse Data Science felületén elemezheti a DataFrame oszlopaiban meglévő 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 a következőket sajátíthatja el:
- 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 a 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 iratkozzon fel egy ingyenes Microsoft Fabric próba.
Jelentkezzen be a Microsoft Fabric.
A kezdőlap bal alsó részén található élménykapcsolóval válthat Fabricre.
A bal oldali navigációs panelen válassza Munkaterületek lehetőséget a munkaterület megkereséséhez és kijelöléséhez. Ez a munkaterület lesz az aktuális munkaterület.
Töltse le a Customer Profitability Sample.pbix szemantikai modellt a gitHub-adattárból.
A munkaterületen válassza >jelentés vagy lapszámozott jelentés importálása>A számítógépről lehetőséget a Customer Profitability Sample.pbix fájl munkaterületre való feltöltéséhez.
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 az utasításokat a A rendszer előkészítése adatelemzési oktatóanyagokhoz részben, hogy a jegyzetfüzetet importálja a munkaterületére.
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ítse a
SemPy
-t a PyPI-ból a jegyzetfüzetben lévő%pip
beépített telepítési lehetőség használatá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: Customer Profitability Sample.pbix. A szemantikai modell leírását a Power BI
Töltse be a Power BI-adatokat a FabricDataFramesbe a SemPy
read_table
függvényével:dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()
Töltse be a
State
táblát egy FabricDataFrame-be:state = fabric.read_table(dataset, "State") state.head()
Bár a kód kimenete egy pandas DataFrame-hez hasonlít, valójában inicializáltál egy
FabricDataFrame
nevű adatstruktúrát, amely a pandas tetejére építve néhány hasznos műveletet is támogat.Ellenőrizze a
customer
adattípusát:type(customer)
A kimenet megerősíti, hogy
customer
sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
típusú.Csatlakozzon a
customer
ésstate
DataFrame-ekhez: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ég egy-a-többihez kapcsolatként nyilvánul 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
find_dependencies
függvényét 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
plot_dependency_metadata
függvényével:plot_dependency_metadata(dependencies)
A vártnak megfelelően a funkcionális függőségek grafikonja azt mutatja, hogy a
Customer
oszlop meghatároz néhány oszlopot, példáulCity
,Postal Code
ésName
.Meglepő módon a gráf nem mutat funkcionális függőséget
City
ésPostal Code
között, valószínűleg azért, mert az oszlopok közötti kapcsolatokban sok a szabálysértés. A SemPyplot_dependency_violations
függvényével 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
Rajzoljunk egy diagramot a(z) SemPy
plot_dependency_violations
vizualizációs függvényével.customer_state_df.plot_dependency_violations('Postal Code', 'City')
A függőségi szabálysértések ábrázolása a bal oldali
Postal Code
értékeit, a jobb oldalon pedig aCity
értékeit jeleníti meg. Egy él összekapcsol egyPostal Code
a bal oldalon egyCity
a jobb oldalon, ha van egy sor, amely tartalmazza ezt a két értéket. Az élek az ilyen sorok számával vannak megjelölve. 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
Postal Code
üres értékeinek számát:customer_state_df['Postal Code'].isna().sum()
50 sorban nincs megadva irányítószám.
Üres értékeket tartalmazó sorok elvetése. Ezután keresse meg a függőségeket a
find_dependencies
függvénnyel. 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
Postal Code
ésCity
feltételes entrópia 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ét a0.01
alapértelmezett értékéről0.05
, csak a függőségek megtekintéséhez. 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 növelése az alapértelmezett
0.01
értékről0.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 összekapcsolja
City
ésRegion
, ami 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, hogy Downers Grove város található Illinoisban és Nebraskában. Downer's Grove azonban egy város Illinois, nem Nebraska.
Tekintse meg Fremontvá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 Premont, nem Fremontot adja vissza.
Az is gyanús, hogy a
Name
és aCountry/Region
közötti függőség megsértései láthatók, amit az eredeti függőségi szabálysértések grafikonján a szaggatott vonal jelez (mielőtt eltávolítanánk a sorokat, melyek üres értékeket tartalmaznak).customer_state_df.list_dependency_violations('Name', 'Country/Region')
Úgy tűnik, hogy egy ügyfél, SDI Design két régióban van jelen: az Egyesült Államokban és Kanadában. 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:
Nézze meg közelebbről a SDI Designügyfél:
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ással
- oktatóanyag: Kapcsolatok felderítése a Synthea adatkészletben szemantikai hivatkozással
- Útmutató: Adatok ellenőrzése SemPy és Great Expectations (GX) segítségével