Olvasás angol nyelven

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

  • Jelentkezzen be a Microsoft Fabricbe.

  • A kezdőlap bal oldalán található élménykapcsolóval válthat a Synapse Adattudomány felületre.

    Képernyőkép a felületváltó menüjéről, amelyen látható, hogy hol válassza ki a Adattudomány.

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.

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

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

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

  4. Csatlakozzon a customer dataFrame-ekhez state :

    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.

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

    plot_dependency_metadata(dependencies)
    

    Képernyőkép a függőségi metaadatok ábrázolásáról.

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

    Meglepő módon a gráf nem jelenít meg funkcionális függőséget City az és Postal Codekö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ével plot_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

  1. Diagram rajzolása SemPy vizualizációs függvényével plot_dependency_violations .

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

    Képernyőkép a függőségi szabálysértések ábrázolásáról.

    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ékeket City jeleníti meg. Ha van egy sor, amely tartalmazza ezt a két értéket, a bal oldalon lévő él és a City jobb oldali oldal összekapcsolja Postal 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.

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

  3. Ü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é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 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ét 0.01 az alapértelmezett értékről a következőre, csak a függőségek megtekintéséhez 0.05. 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 0.01 növelése az alapértelmezett értékről a következőre 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

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

    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 csatlakozik City , és Regionazt 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, Downers Grove város előforduló Illinois és Nebraska. Downer's Grove azonban illinois-i város, nem Nebraska.

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

  8. 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 és Country/Regionkö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:

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

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