Delen via


Zelfstudie: Relaties ontdekken in een semantisch model met behulp van een semantische koppeling

In deze zelfstudie ziet u hoe u met Power BI communiceert vanuit een Jupyter-notebook en relaties tussen tabellen detecteert met behulp van de SemPy-bibliotheek.

In deze zelfstudie leert u het volgende:

  • Relaties ontdekken in een semantisch model (Power BI-gegevensset), met behulp van de Python-bibliotheek van semantische koppelingen (SemPy).
  • Gebruik onderdelen van SemPy die ondersteuning bieden voor integratie met Power BI en helpen bij het automatiseren van analyse van gegevenskwaliteit. Deze onderdelen zijn onder andere:
    • FabricDataFrame- een pandas-achtige structuur die is uitgebreid met aanvullende semantische informatie.
    • Functies voor het ophalen van semantische modellen uit een Fabric-werkruimte in uw notebook.
    • Functies die de evaluatie van hypothesen over functionele afhankelijkheden automatiseren en waarmee schendingen van relaties in uw semantische modellen worden geïdentificeerd.

Voorwaarden

  • Selecteer Werkruimten in het linkernavigatiedeelvenster om uw werkruimte te zoeken en te selecteren. Deze werkruimte wordt uw huidige werkruimte.

  • Download de semantische modelbestanden Customer Profitability Sample.pbix en Customer Profitability Sample (auto).pbix van de GitHub-opslagplaats fabric-samples en upload deze naar uw werkruimte.

Volg mee in het notitieblok

De notebook powerbi_relationships_tutorial.ipynb begeleidt deze zelfstudie.

Het notebook instellen

In deze sectie stelt u een notebookomgeving in met de benodigde modules en gegevens.

  1. Installeer SemPy vanuit PyPI met behulp van de %pip inline-installatiemogelijkheid in het notebook:

    %pip install semantic-link
    
  2. Voer de benodigde importbewerkingen uit van SemPy-modules die u later nodig hebt:

    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. Importeer pandas voor het afdwingen van een configuratieoptie die helpt bij het opmaken van uitvoer:

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

Semantische modellen verkennen

In deze handleiding wordt gebruikgemaakt van een standaard semantisch voorbeeldmodel Customer Profitability Sample.pbix. Zie voorbeeld van klantwinstgevendheid voor Power BIvoor een beschrijving van het semantische model.

  • Gebruik de functie list_datasets van SemPy om semantische modellen in uw huidige werkruimte te verkennen:

    fabric.list_datasets()
    

Voor de rest van dit notitieboekje gebruik je twee versies van het semantische model "Customer Profitability Sample".

  • voorbeeld van klantwinstgevendheid: het semantische model dat afkomstig is van Power BI-voorbeelden met vooraf gedefinieerde tabelrelaties
  • Voorbeeld van klantwinstgevendheid (automatisch): dezelfde gegevens, maar relaties zijn beperkt tot de gegevens die door Power BI automatisch worden gedetecteerd.

Een semantisch voorbeeldmodel extraheren met het vooraf gedefinieerde semantische model

  1. Laad de relaties die vooraf zijn gedefinieerd en opgeslagen binnen het Customer Profitability Sample semantisch model, met behulp van de functie van SemPy list_relationships. Deze functie bevat een overzicht van het tabellaire objectmodel:

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualiseer het relationships DataFrame als een grafiek met behulp van de plot_relationship_metadata functie van SemPy:

    plot_relationship_metadata(relationships)
    

    Schermopname met een plot van de relaties tussen tabellen in het semantische model.

In deze grafiek ziet u de 'grondwaar' voor relaties tussen tabellen in dit semantische model, omdat deze weerspiegelen hoe ze zijn gedefinieerd in Power BI door een expert op het gebied van onderwerp.

Ontdekking van aanvullende relaties

Als u bent begonnen met relaties die automatisch door Power BI zijn gedetecteerd, hebt u een kleinere set.

  1. Visualiseer de relaties die automatisch door Power BI zijn gedetecteerd in het semantische model:

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

    schermopname van de relaties die automatisch zijn gedetecteerd in Power BI in het semantische model.

    De automatische detectie van Power BI heeft veel relaties niet herkend. Bovendien zijn twee van de automatisch gedetecteerde relaties semantisch onjuist:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. De relaties afdrukken als een tabel:

    autodetected
    

    Onjuiste relaties met de Industry tabel worden weergegeven in rijen met index 3 en 4. Gebruik deze informatie om deze rijen te verwijderen.

  3. Negeer de onjuist geïdentificeerde relaties.

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

    U hebt nu de juiste, maar onvolledige relaties.

  4. Visualiseer deze onvolledige relaties met behulp van plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Schermopname van een visualisatie van relaties na het verwijderen van onjuiste relaties.

  5. Laad alle tabellen uit het semantische model met behulp van de functies van SemPy list_tables en read_table:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Zoek relaties tussen tabellen met behulp van find_relationshipsen bekijk de logboekuitvoer om inzicht te krijgen in de werking van deze functie:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. Nieuw gedetecteerde relaties visualiseren:

    plot_relationship_metadata(suggested_relationships_all)
    

    Schermopname van visualisatie van nieuw gedetecteerde relaties.

    SemPy kon alle relaties detecteren.

  8. Gebruik de parameter exclude om de zoekopdracht te beperken tot aanvullende relaties die niet eerder zijn geïdentificeerd:

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

De relaties valideren

  1. Laad eerst de gegevens uit het Voorbeeld van klantwinstgevendheid semantisch model:

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Controleer op overlapping van primaire en vreemde sleutelwaarden met behulp van de functie list_relationship_violations. Geef de uitvoer van de list_relationships functie op als invoer voor list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    De relatieschendingen bieden enkele interessante inzichten. Een van de zeven waarden in Fact[Product Key] is bijvoorbeeld niet aanwezig in Product[Product Key]en deze ontbrekende sleutel is 50.

Verkennende gegevensanalyse is een spannend proces, en dat geldt ook voor het opschonen van gegevens. Er is altijd iets dat de gegevens verbergen, afhankelijk van hoe u deze bekijkt, wat u wilt vragen, enzovoort. Semantische koppeling biedt u nieuwe hulpprogramma's die u kunt gebruiken om meer te bereiken met uw gegevens.

Bekijk andere handleidingen voor semantische koppeling / SemPy: