Del via


Opplæring: Oppdag relasjoner i en semantisk modell ved hjelp av semantisk kobling

Denne opplæringen illustrerer hvordan du samhandler med Power BI fra en Jupyter-notatblokk og oppdager relasjoner mellom tabeller ved hjelp av SemPy-biblioteket.

I denne opplæringen lærer du hvordan du:

  • Oppdag relasjoner i en semantisk modell (Power BI-datasett), ved hjelp av Python-biblioteket for semantisk kobling (SemPy).
  • Bruk komponenter i SemPy som støtter integrering med Power BI, og hjelp til å automatisere analyse av datakvalitet. Disse komponentene omfatter:
    • FabricDataFrame - en pandas-lignende struktur forbedret med ekstra semantisk informasjon.
    • Funksjoner for å trekke semantiske modeller fra et Fabric-arbeidsområde inn i notatblokken.
    • Funksjoner som automatiserer evalueringen av hypoteser om funksjonelle avhengigheter og som identifiserer brudd på relasjoner i semantiske modeller.

Forutsetninger

  • Velg arbeidsområder fra venstre navigasjonsrute for å finne og velge arbeidsområdet. Dette arbeidsområdet blir ditt gjeldende arbeidsområde.

  • Last ned Eksempel på kundelønnsomhet.pbix og Eksempel på kundelønnsomhet (auto).pbix semantiske modeller fra gitHub-repositorium for stoffeksempler og last dem opp til arbeidsområdet.

Følg med i notatblokken

Notatblokken powerbi_relationships_tutorial.ipynb følger med denne opplæringen.

Hvis du vil åpne den medfølgende notatblokken for denne opplæringen, følger du instruksjonene i Klargjør systemet for opplæringer i datavitenskap, for å importere notatblokken til arbeidsområdet.

Hvis du heller vil kopiere og lime inn koden fra denne siden, kan du opprette en ny notatblokk.

Pass på å feste et lakehouse til notatblokken før du begynner å kjøre kode.

Konfigurere notatblokken

I denne delen konfigurerer du et notatblokkmiljø med de nødvendige modulene og dataene.

  1. Installer SemPy fra PyPI ved hjelp av %pip innebygd installasjonsfunksjonalitet i notatblokken:

    %pip install semantic-link
    
  2. Utfør nødvendige importer av SemPy-moduler som du trenger senere:

    import sempy.fabric as fabric
    
    from sempy.relationships import plot_relationship_metadata
    from sempy.relationships import find_relationships
    from sempy.fabric import list_relationship_violations
    
  3. Importer pandaer for å fremtvinge et konfigurasjonsalternativ som hjelper med utdataformatering:

    import pandas as pd
    pd.set_option('display.max_colwidth', None)
    

Utforsk semantiske modeller

Denne opplæringen bruker en standard semantisk eksempelmodell Eksempel på kundelønnsomhet.pbix. Hvis du vil ha en beskrivelse av den semantiske modellen, kan du se eksempel på kundelønnsomhet for Power BI-.

  • Bruk SemPys list_datasets-funksjon til å utforske semantiske modeller i det gjeldende arbeidsområdet:

    fabric.list_datasets()
    

For resten av denne notatblokken bruker du to versjoner av semantisk modell for eksempel på kundelønnsomhet:

  • Eksempel på kundelønnsomhet: den semantiske modellen etter hvert som den kommer fra Power BI-eksempler med forhåndsdefinerte tabellrelasjoner
  • eksempel på kundelønnsomhet (automatisk): de samme dataene, men relasjonene er begrenset til de som Power BI automatisk vil oppdage.

Trekke ut en semantisk eksempelmodell med den forhåndsdefinerte semantiske modellen

  1. Last inn relasjoner som er forhåndsdefinerte og lagret i eksempel på kundelønnsomhet semantisk modell, ved hjelp av SemPys list_relationships-funksjon. Denne funksjonen viser fra tabellobjektmodellen:

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualiser relationships DataFrame som en graf ved hjelp av SemPys plot_relationship_metadata-funksjon:

    plot_relationship_metadata(relationships)
    

    Skjermbilde som viser et tegn på relasjonene mellom tabeller i den semantiske modellen.

Denne grafen viser "ground truth" for relasjoner mellom tabeller i denne semantiske modellen, da den gjenspeiler hvordan de ble definert i Power BI av en fagekspert.

Komplementer relasjonsoppdagelse

Hvis du startet med relasjoner som Power BI automatisk oppdaget, ville du ha et mindre sett.

  1. Visualiser relasjonene som Power BI automatisk oppdaget i den semantiske modellen:

    dataset = "Customer Profitability Sample (auto)"
    autodetected = fabric.list_relationships(dataset)
    plot_relationship_metadata(autodetected)
    

    Skjermbilde som viser relasjonene som Power BI automatisk oppdaget i semantisk modell.

    Power BIs automatiske innstilling gikk glipp av mange relasjoner. Dessuten er to av de automatisk gjenkjenningsrelasjonene semantisk feil:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Skriv ut relasjonene som en tabell:

    autodetected
    

    Feil relasjoner til Industry tabellen vises i rader med indeks 3 og 4. Bruk denne informasjonen til å fjerne disse radene.

  3. Forkast de feilaktig identifiserte relasjonene.

    autodetected.drop(index=[3,4], inplace=True)
    autodetected
    

    Nå har du riktige, men ufullstendige relasjoner.

  4. Visualiser disse ufullstendige relasjonene ved hjelp av plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    skjermbilde som viser en visualisering av relasjoner etter at du har fjernet feil.

  5. Last inn alle tabellene fra den semantiske modellen ved hjelp av SemPys list_tables- og read_table-funksjoner:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Finn relasjoner mellom tabeller ved hjelp av find_relationships, og se gjennom loggutdataene for å få innsikt i hvordan denne funksjonen fungerer:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. Visualiser nylig oppdagede relasjoner:

    plot_relationship_metadata(suggested_relationships_all)
    

    skjermbilde som viser visualisering av nylig oppdagede relasjoner.

    SemPy kunne oppdage alle relasjoner.

  8. Bruk parameteren exclude til å begrense søket til flere relasjoner som ikke ble identifisert tidligere:

    additional_relationships = find_relationships(
        tables,
        exclude=autodetected,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7
    )
    
    additional_relationships
    

Validere relasjonene

  1. Først laster du inn dataene fra eksempel på kundelønnsomhet semantisk modell:

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Se etter overlapping av primær- og sekundærnøkkelverdier ved hjelp av list_relationship_violations-funksjonen. Angi utdataene for list_relationships-funksjonen som inndata for list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Relasjonsbruddene gir noen interessante innsikter. Én av sju verdier i Fact[Product Key] finnes for eksempel ikke i Product[Product Key], og denne manglende nøkkelen er 50.

Utforskende dataanalyse er en spennende prosess, og det samme er datarengjøring. Det er alltid noe dataene skjuler, avhengig av hvordan du ser på dem, hva du vil spørre om og så videre. Semantisk kobling gir deg nye verktøy som du kan bruke til å oppnå mer med dataene.

Sjekk ut andre opplæringer for semantisk kobling / SemPy: