Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Brug funktionelle afhængigheder til at rense data. Der findes en funktionel afhængighed, når én kolonne i en semantisk model (et Power BI-datasæt) afhænger af en anden kolonne. En ZIP code kolonne kan f.eks. bestemme værdien i en city kolonne. En funktionel afhængighed vises som en en-til-mange-relation mellem værdier i to eller flere kolonner i en DataFrame. Dette selvstudium bruger Synthea-datasættet til at vise, hvordan funktionelle afhængigheder hjælper med at registrere problemer med datakvaliteten.
I dette selvstudium lærer du, hvordan du:
- Anvend domæneviden til at danne hypoteser om funktionelle afhængigheder i en semantisk model.
- Bliv fortrolig med komponenter i Semantic Link Python-biblioteket (SemPy), der automatiserer datakvalitetsanalyse. Disse komponenter omfatter:
-
FabricDataFrame– en pandalignende struktur med yderligere semantisk information. - Funktioner, der automatiserer evaluering af hypoteser om funktionelle afhængigheder og identificerer overtrædelser i dine semantiske modeller.
-
Forudsætninger
Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Microsoft Fabric-prøveversion.
Log på Microsoft Fabric.
Skift til Fabric ved at bruge experience-switcheren nederst til venstre på din startside.
- Vælg Arbejdsområder i navigationsruden, og vælg derefter dit arbejdsområde for at angive det som det aktuelle arbejdsområde.
Følg med i notesbogen
Brug notesbogen data_cleaning_functional_dependencies_tutorial.ipynb til at følge dette selvstudium.
Hvis du vil åbne den medfølgende notesbog til dette selvstudium, skal du følge vejledningen i Forbered dit system til selvstudier om datavidenskab importere notesbogen til dit arbejdsområde.
Hvis du hellere vil kopiere og indsætte koden fra denne side, kan du oprette en ny notesbog.
Sørg for at vedhæfte et lakehouse til notesbogen, før du begynder at køre kode.
Konfigurer notesbogen
I dette afsnit skal du konfigurere et notesbogsmiljø.
Tjek din Spark-version. Hvis du bruger Spark 3.4 eller nyere i Microsoft Fabric, er Semantic Link inkluderet som standard, så du behøver ikke at installere det. Hvis du bruger Spark 3.3 eller tidligere, eller hvis du vil opdatere til det nyeste semantiske link, skal du køre følgende kommando.
%pip install -U semantic-linkImporter de moduler, du bruger i denne notesbog.
import pandas as pd import sempy.fabric as fabric from sempy.fabric import FabricDataFrame from sempy.dependencies import plot_dependency_metadataDownload eksempeldataene. I dette selvstudium skal du bruge Synthea-datasættet med syntetiske patientjournaler (lille version for nemheds skyld).
download_synthea(which='small')
Udforsk dataene
Initialiser a
FabricDataFramemed indholdet af denproviders.csv fil.providers = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv")) providers.head()Tjek for datakvalitetsproblemer med SemPys
find_dependenciesfunktion ved at plotte en graf over automatisk registrerede funktionelle afhængigheder.deps = providers.find_dependencies() plot_dependency_metadata(deps)Grafen viser, at
IdbestemmerNAMEogORGANIZATION. Dette resultat forventes, fordiIddet er unikt.Bekræft, at det
Ider unikt.providers.Id.is_uniqueKoden returnerer
Truefor at bekræfte, atIder entydig.
Analysér funktionelle afhængigheder i dybden
Grafen over funktionelle afhængigheder viser også, at ORGANIZATION bestemmer ADDRESS og ZIPsom forventet. Du kan dog forvente, at ZIP også bestemmer CITY, men den stiplede pil angiver, at afhængigheden kun er omtrentlig, hvilket peger på et problem med datakvaliteten.
Der er andre egenskaber i grafen.
NAME bestemmer f.eks. ikke GENDER, Id, SPECIALITYeller ORGANIZATION. Hver af disse særheder kan være værd at undersøge.
- Tag et dybere kig på det omtrentlige forhold mellem
ZIPogCITYved at bruge SemPyslist_dependency_violationsfunktion til at liste overtrædelserne:
providers.list_dependency_violations('ZIP', 'CITY')
- Tegn en graf med SemPys
plot_dependency_violationsvisualiseringsfunktion. Denne graf er nyttig, hvis antallet af overtrædelser er lille:
providers.plot_dependency_violations('ZIP', 'CITY')
Afhandlingen med afhængighedsovertrædelser viser værdier for ZIP i venstre side og værdier for CITY i højre side. En kant forbinder et postnummer i venstre side af afbildningen med en by i højre side, hvis der er en række, der indeholder disse to værdier. Kanterne anmærkes med antallet af sådanne rækker. Der er f.eks. to rækker med postnummeret 02747-1242, én række med byen "NORTH DARTHMOUTH" og den anden med byen "DARTHMOUTH", som vist i det forrige plot og følgende kode:
- Bekræft observationerne fra plottet ved at køre følgende kode:
providers[providers.ZIP == '02747-1242'].CITY.value_counts()
Plottet viser også, at blandt de rækker, der har
CITYsom "DARTHMOUTH", har ni rækker enZIPpå 02747-1262. En række har enZIPpå 02747-1242. En række har enZIPpå 02747-2537. Bekræft disse bemærkninger med følgende kode:providers[providers.CITY == 'DARTHMOUTH'].ZIP.value_counts()Der er andre postnumre forbundet med "DARTMOUTH", men disse postnumre vises ikke i grafen over afhængighedsovertrædelser, fordi de ikke antyder problemer med datakvaliteten. Postnummeret "02747-4302" er f.eks. entydigt forbundet med "DARTMOUTH" og vises ikke i grafen over afhængighedsovertrædelser. Bekræft ved at køre følgende kode:
providers[providers.ZIP == '02747-4302'].CITY.value_counts()
Opsummer problemer med datakvaliteten, der er registreret med SemPy
Grafen over afhængighedsovertrædelser viser flere problemer med datakvaliteten i denne semantiske model:
- Nogle bynavne er med store bogstaver. Brug strengmetoder til at løse dette problem.
- Nogle bynavne har kvalifikatorer (eller præfikser), f.eks. "Nord" og "Øst". For eksempel knyttes postnummeret "2128" til "EAST BOSTON" én gang og til "BOSTON" én gang. Et lignende problem opstår mellem "NORTH DARTMOUTH" og "DARTMOUTH". Drop disse kvalifikatorer, eller knyt postnumrene til den by, der har den mest almindelige forekomst.
- Der er stavefejl i nogle bynavne, som "PITTSFIELD" vs. "PITTSFILED" og "NEWBURGPORT" vs. "NEWBURYPORT." For "NEWBURGPORT" skal du rette denne tastefejl ved hjælp af den mest almindelige forekomst. For "PITTSFIELD", med kun én forekomst hver, er automatisk flertydighed meget sværere uden ekstern viden eller en sprogmodel.
- Nogle gange forkortes præfikser som "West" til det enkelte bogstav "W". Erstat "W" med "West", hvis alle forekomster af "W" står for "West".
- Postnummeret "02130" kortlægges til "BOSTON" én gang og "Jamaica Plain" én gang. Dette problem er ikke let at løse. Med flere data kan du kortlægge den mest almindelige forekomst.
Ryd dataene
Ret store bogstaver ved at ændre værdier til store og små bogstaver.
providers['CITY'] = providers.CITY.str.title()Kør registrering af overtrædelser igen for at bekræfte, at der er færre tvetydigheder.
providers.list_dependency_violations('ZIP', 'CITY')
Afgræns dataene manuelt, eller slip rækker, der overtræder funktionelle begrænsninger mellem kolonner ved hjælp af SemPys drop_dependency_violations funktion.
For hver værdi af den determinantvariabel vælges den mest almindelige værdi af den afhængige variabel, drop_dependency_violations og alle rækker slippes med andre værdier. Anvend kun denne handling, hvis du er sikker på, at denne statistiske heuristik fører til korrekte resultater for dine data. Ellers skal du skrive din egen kode for at håndtere de registrerede overtrædelser.
Kør
drop_dependency_violationsfunktionen på kolonnerneZIPogCITY.providers_clean = providers.drop_dependency_violations('ZIP', 'CITY')Angiv eventuelle afhængighedsovertrædelser mellem
ZIPogCITY.providers_clean.list_dependency_violations('ZIP', 'CITY')
Koden returnerer en tom liste for at angive, at der ikke er flere overtrædelser af den funktionelle begrænsning ZIP -> CITY.
Relateret indhold
Se andre tutorials for semantisk link eller SemPy:
- selvstudium: Analysér funktionelle afhængigheder i en semantisk eksempelmodel
- selvstudium: Udtræk og beregn Power BI-målinger fra en Jupyter-notesbog
- Selvstudium: Finde relationer i en semantisk model ved hjælp af semantisk link
- Selvstudium: Finde relationer i Synthea-datasættet ved hjælp af semantisk link
- selvstudium: Valider data ved hjælp af GX- (SemPy and Great Expectations)