Självstudie: Analysera funktionella beroenden i en semantisk modell
I den här självstudien bygger du vidare på tidigare arbete som utförts av en Power BI-analytiker och lagras i form av semantiska modeller (Power BI-datauppsättningar). Genom att använda SemPy (förhandsversion) i Synapse Data Science-upplevelsen i Microsoft Fabric analyserar du funktionella beroenden som finns i kolumner i en DataFrame. Den här analysen hjälper till att identifiera problem med datakvalitet som inte är triviala för att få mer exakta insikter.
I den här handledningen lär du dig hur du:
- Använd domänkunskap för att formulera hypoteser om funktionella beroenden i en semantisk modell.
- Bekanta dig med komponenter i semantiklänkens Python-bibliotek (SemPy) som stöder integrering med Power BI och hjälper till att automatisera datakvalitetsanalys. Dessa komponenter omfattar:
- FabricDataFrame – en Pandas-liknande struktur som utökas med ytterligare semantisk information.
- Användbara funktioner för att hämta semantiska modeller från en Fabric-arbetsyta till din notebook.
- Användbara funktioner som automatiserar utvärderingen av hypoteser om funktionella beroenden och som identifierar överträdelser av relationer i dina semantiska modeller.
Förutsättningar
Skaffa en Microsoft Fabric-prenumeration. Eller registrera dig för en kostnadsfri Microsoft Fabric-utvärderingsversion.
Logga in på Microsoft Fabric.
Använd funktionens växlare längst ned till vänster på startsidan för att växla till Fabric.
Välj Arbetsytor i det vänstra navigeringsfönstret för att hitta och välja din arbetsyta. Den här arbetsytan blir din aktuella arbetsyta.
Ladda ned den semantiska modellen Customer Profitability Sample.pbix från GitHub-lagringsplatsen fabric-samples .
På arbetsytan väljer du Importera>rapport eller paginerad rapport>från den här datorn för att ladda upp filen Customer Profitability Sample.pbix till din arbetsyta.
Följ med i anteckningsboken
Den powerbi_dependencies_tutorial.ipynb notebook-filen medföljer denna självstudie.
För att öppna den medföljande notebooken för den här självstudien, följ anvisningarna i Förbered ditt system för självstudier inom datavetenskapen för att importera notebooken till din arbetsyta.
Om du hellre kopierar och klistrar in koden från den här sidan kan du skapa en ny notebook-fil.
Se till att ansluta en lakehouse till notebooken innan du börjar köra kod.
Konfigurera anteckningsboken
I det här avsnittet konfigurerar du en notebook-miljö med nödvändiga moduler och data.
Installera
SemPy
från PyPI med hjälp av den%pip
in-line-installationsfunktionen i notebook-filen:%pip install semantic-link
Utför nödvändiga importer av moduler som du behöver senare:
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Läsa in och förbearbeta data
I den här självstudien används en standardexempel på en semantisk modell av Customer Profitability Sample.pbix. En beskrivning av semantikmodellen finns i exempel på kundlönsamhet för Power BI-.
Läs in Power BI-data i FabricDataFrames med hjälp av SemPys
read_table
-funktion:dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()
Läs in tabellen
State
i en FabricDataFrame:state = fabric.read_table(dataset, "State") state.head()
Även om utdata från den här koden ser ut som en Pandas DataFrame har du faktiskt initierat en datastruktur som kallas en
FabricDataFrame
som stöder vissa användbara åtgärder ovanpå Pandas.Kontrollera datatypen för
customer
:type(customer)
Utdata bekräftar att
customer
är av typensempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
.'Anslut
customer
ochstate
DataFrames:customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Identifiera funktionella beroenden
Ett funktionellt beroende manifesterar sig som en en-till-många-relation mellan värdena i två (eller flera) kolumner i en DataFrame. Dessa relationer kan användas för att automatiskt identifiera datakvalitetsproblem.
Kör SemPys
find_dependencies
funktion på den sammanfogade DataFrame för att identifiera befintliga funktionella beroenden mellan värden i kolumnerna:dependencies = customer_state_df.find_dependencies() dependencies
Visualisera identifierade beroenden med hjälp av SemPys
plot_dependency_metadata
funktion:plot_dependency_metadata(dependencies)
Som förväntat visar diagrammet funktionella beroenden att kolumnen
Customer
avgör vissa kolumner somCity
,Postal Code
ochName
.Överraskande nog visar diagrammet inte ett funktionellt beroende mellan
City
ochPostal Code
, förmodligen för att det finns många överträdelser i relationerna mellan kolumnerna. Du kan använda SemPysplot_dependency_violations
-funktion för att visualisera överträdelser av beroenden mellan specifika kolumner.
Utforska data för kvalitetsproblem
Rita ett diagram med SemPys
plot_dependency_violations
visualiseringsfunktion.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Diagrammet över beroendeöverträdelser visar värden för
Postal Code
till vänster och värden förCity
till höger. En kant ansluter enPostal Code
till vänster med enCity
till höger om det finns en rad som innehåller dessa två värden. Kanterna kommenteras med antalet sådana rader. Det finns till exempel två rader med postnummer 20004, en med staden "North Tower" och den andra med staden "Washington".Dessutom visar diagrammet några överträdelser och många tomma värden.
Bekräfta antalet tomma värden för
Postal Code
:customer_state_df['Postal Code'].isna().sum()
50 rader har NA för postnummer.
Släpp rader med tomma värden. Leta sedan reda på beroenden med hjälp av funktionen
find_dependencies
. Observera den extra parameternverbose=1
som ger en inblick i det interna arbetet i SemPy:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)
Villkorsstyrd entropi för
Postal Code
ochCity
är 0,049. Det här värdet anger att det finns funktionella beroendeöverträdelser. Innan du åtgärdar överträdelserna höjer du tröskelvärdet för villkorsstyrd entropi från standardvärdet för0.01
till0.05
, bara för att se beroendena. Lägre tröskelvärden resulterar i färre beroenden (eller högre selektivitet).Höj tröskelvärdet för villkorsstyrd entropi från standardvärdet för
0.01
till0.05
:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
Om du använder domänkunskaper om vilken entitet som avgör värden för andra entiteter verkar det här beroendediagrammet vara korrekt.
Utforska fler problem med datakvalitet som har identifierats. En streckad pil kopplar till exempel
City
ochRegion
, vilket indikerar att beroendet bara är ungefärligt. Den här ungefärliga relationen kan innebära att det finns ett partiellt funktionellt beroende.customer_state_df.list_dependency_violations('City', 'Region')
Ta en närmare titt på varje fall där ett icke-tomt
Region
-värde orsakar en överträdelse.customer_state_df[customer_state_df.City=='Downers Grove']
Resultatet visar att staden Downers Grove ligger i Illinois och Nebraska. Downer's Grove är dock en stad i Illinois, inte Nebraska.
Ta en titt på staden Fremont:
customer_state_df[customer_state_df.City=='Fremont']
Det finns en stad som heter Fremont i Kalifornien. Men för Texas returnerar sökmotorn Premont, inte Fremont.
Det är också misstänkt att se överträdelser av beroendet mellan
Name
ochCountry/Region
, vilket anges av den streckade linjen i den ursprungliga grafen över beroendeöverträdelser (innan raderna med tomma värden släpps).customer_state_df.list_dependency_violations('Name', 'Country/Region')
Det verkar som om en kund, SDI Design finns i två regioner – USA och Kanada. Denna förekomst kanske inte är en semantisk överträdelse, men kan bara vara ett ovanligt fall. Ändå är det värt att ta en närmare titt:
Ta en närmare titt på kundens SDI Design:
customer_state_df[customer_state_df.Name=='SDI Design']
Ytterligare kontroll visar att det faktiskt är två olika kunder (från olika branscher) med samma namn.
Undersökande dataanalys är en spännande process, och det är även datarensning. Det finns alltid något som data döljer, beroende på hur du ser på dem, vad du vill fråga och så vidare. Semantisk länk ger dig nya verktyg som du kan använda för att uppnå mer med dina data.
Relaterat innehåll
Kolla in andra handledningar för Semantisk länk/SemPy:
- Självstudie: Rensa data med funktionella beroenden
- Självstudie: Extrahera och beräkna Power BI-mått från en Jupyter Notebook-
- Självstudie: Identifiera relationer i en semantisk modell med hjälp av semantisk länk
- Självstudie: Identifiera relationer i datauppsättningen Synthea med hjälp av semantisk länk
- Självstudie: Verifiera data med SemPy och Great Expectations (GX)