Del via


Selvstudium: Find relationer i en semantisk model ved hjælp af semantisk link

I dette selvstudium illustreres det, hvordan du interagerer med Power BI fra en Jupyter-notesbog og registrerer relationer mellem tabeller ved hjælp af SemPy-biblioteket.

I dette selvstudium lærer du, hvordan du kan:

  • Find relationer i en semantisk model (Power BI-datasæt) ved hjælp af det semantiske links Python-bibliotek (SemPy).
  • Brug komponenter i SemPy, der understøtter integration med Power BI, og som hjælper med at automatisere analyse af datakvalitet. Disse komponenter omfatter:
    • FabricDataFrame – en pandaslignende struktur, der er forbedret med yderligere semantiske oplysninger.
    • Funktioner til at trække semantiske modeller fra et Fabric-arbejdsområde ind i din notesbog.
    • Funktioner, der automatiserer evalueringen af hypoteser om funktionelle afhængigheder, og som identificerer overtrædelser af relationer i dine semantiske modeller.

Forudsætninger

  • Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Prøveversion af Microsoft Fabric.

  • Log på Microsoft Fabric.

  • Brug oplevelsesskifteren i venstre side af startsiden til at skifte til Synapse Data Science-oplevelsen.

    Skærmbillede af menuen til skift af oplevelse, der viser, hvor du skal vælge Datavidenskab.

  • Vælg Arbejdsområder i navigationsruden til venstre for at finde og vælge dit arbejdsområde. Dette arbejdsområde bliver dit aktuelle arbejdsområde.

  • Download eksempel på kunderentabilitet.pbix og eksempel på kunderentabilitet (auto).pbix semantiske modeller fra GitHub-lageret med stofeksempler , og upload dem til dit arbejdsområde.

Følg med i notesbogen

Notesbogen powerbi_relationships_tutorial.ipynb følger med 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 for at 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 notesbogmiljø med de nødvendige moduler og data.

  1. Installér SemPy fra PyPI ved hjælp af funktionen %pip til indbygget installation i notesbogen:

    %pip install semantic-link
    
  2. Udfør den nødvendige import af SemPy-moduler, som du skal bruge 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. Importér pandas for at gennemtvinge en konfigurationsindstilling, der hjælper med outputformatering:

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

Udforsk semantiske modeller

I dette selvstudium bruges en semantisk standardmodel for eksempel på kunderentabilitet Sample.pbix. Du kan se en beskrivelse af den semantiske model under Eksempel på kunderentabilitet for Power BI.

  • Brug SemPys list_datasets funktion til at udforske semantiske modeller i dit aktuelle arbejdsområde:

    fabric.list_datasets()
    

I resten af denne notesbog bruger du to versioner af semantikmodellen Customer Profitability Sample:

  • Eksempel på kunderentabilitet: den semantiske model, som den kommer fra Power BI-eksempler med foruddefinerede tabelrelationer
  • Eksempel på kunderentabilitet (automatisk): de samme data, men relationer er begrænset til dem, som Power BI automatisk ville registrere.

Udtræk en semantisk eksempelmodel med dens foruddefinerede semantiske model

  1. Indlæs relationer, der er foruddefineret og gemt i semantisk model eksempel på kunderentabilitet, ved hjælp af SemPys list_relationships funktion. Denne funktion viser en liste fra tabelobjektmodellen:

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualiser relationships DataFrame som en graf ved hjælp af SemPys plot_relationship_metadata funktion:

    plot_relationship_metadata(relationships)
    

    Skærmbillede, der viser en afbildning af relationerne mellem tabeller i den semantiske model.

Denne graf viser "sandheden" for relationer mellem tabeller i denne semantiske model, da den afspejler, hvordan de blev defineret i Power BI af en emneekspert.

Registrering af komplementrelationer

Hvis du startede med relationer, som Power BI automatisk har registreret, har du et mindre sæt.

  1. Visualiser de relationer, som Power BI automatisk har registreret i den semantiske model:

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

    Skærmbillede, der viser de relationer, som Power BI automatisk har registreret i den semantiske model.

    Power BI's automatiske registrering mistede mange relationer. Desuden er to af de automatisk valgte relationer semantisk forkerte:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Udskriv relationerne som en tabel:

    autodetected
    

    Der vises forkerte relationer til tabellen Industry i rækker med indeks 3 og 4. Brug disse oplysninger til at fjerne disse rækker.

  3. Fjern de forkert identificerede relationer.

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

    Nu har du korrekte, men ufuldstændige relationer.

  4. Visualiser disse ufuldstændige relationer ved hjælp af plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Skærmbillede, der viser en visualisering af relationer, efter at du har fjernet forkerte.

  5. Indlæs alle tabellerne fra den semantiske model ved hjælp af SemPy's list_tables og read_table -funktioner:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Find relationer mellem tabeller ved hjælp af find_relationships, og gennemse logoutputtet for at få indsigt i, hvordan denne funktion fungerer:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. Visualiser nyligt fundne relationer:

    plot_relationship_metadata(suggested_relationships_all)
    

    Skærmbillede, der viser visualisering af nyligt opdagede relationer.

    SemPy kunne registrere alle relationer.

  8. Brug parameteren exclude til at begrænse søgningen til yderligere relationer, der ikke tidligere blev identificeret:

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

Valider relationerne

  1. Først skal du indlæse dataene fra den semantiske model Customer Profitability Sample :

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Kontrollér, om der er overlapning mellem primære og fremmede nøgleværdier ved hjælp af funktionen list_relationship_violations . Angiv outputtet af list_relationships funktionen som input til list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Relationsovertrædelserne giver nogle interessante indsigter. En ud af syv værdier i Fact[Product Key] findes f.eks. ikke i Product[Product Key], og denne manglende nøgle er 50.

Udforskning af dataanalyser er en spændende proces, og det samme er datarensning. Der er altid noget, som dataene skjuler, afhængigt af hvordan du ser på dem, hvad du vil spørge om osv. Semantisk link giver dig nye værktøjer, som du kan bruge til at opnå mere med dine data.

Tjek andre selvstudier for semantisk link / SemPy: