Megosztás a következőn keresztül:


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

  • 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.

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.

  1. 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
    
  2. 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ügyfél-jövedelmezőségi mintájában talál.

  1. 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()
    
  2. 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.

  3. Ellenőrizze a customeradattípusát:

    type(customer)
    

    A kimenet megerősíti, hogy customersempy.fabric._dataframe._fabric_dataframe.FabricDataFrametípusú.

  4. Csatlakozzon a customer és state 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.

  1. 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
    
  2. Az azonosított függőségek vizualizációja a SemPy plot_dependency_metadata függvényével:

    plot_dependency_metadata(dependencies)
    

    A függőségi metaadatok ábrázolását bemutató képernyőkép.

    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ául City, Postal Codeés Name.

    Meglepő módon a gráf nem mutat funkcionális függőséget City és Postal Codeközött, valószínűleg azért, mert az oszlopok közötti kapcsolatokban sok a szabálysértés. A SemPy plot_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

  1. 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ását bemutató képernyőkép.

    A függőségi szabálysértések ábrázolása a bal oldali Postal Code értékeit, a jobb oldalon pedig a City értékeit jeleníti meg. Egy él összekapcsol egy Postal Code a bal oldalon egy City 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.

  2. 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.

  3. Ü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étert verbose=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 és City 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 a 0.01 alapértelmezett értékéről 0.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.

  4. A feltételes entrópia küszöbértékének növelése az alapértelmezett 0.01 értékről 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    A függőségi metaadatok ábrázolása magasabb entrópia küszöbértékkel.

    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.

  5. További, észlelt adatminőségi problémák megismerése. Például egy szaggatott nyíl összekapcsolja City és Region, 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')
    
  6. 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.

  7. 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.

  8. Az is gyanús, hogy a Name és a Country/Regionkö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:

  9. 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.

Tekintse meg a szemantikai hivatkozás / SemPy egyéb oktatóanyagait: