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:

  • Ontdek relaties in een semantisch model (Power BI-gegevensset), met behulp van de Python-bibliotheek (SemPy) van semantic Link.
  • 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.

Vereisten

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

  • Download het klantwinstgevendheidsvoorbeeld.pbix en het voorbeeld van klantwinstgevendheid (auto).pbix-semantische modellen uit de GitHub-opslagplaats fabric-samples en upload deze naar uw werkruimte.

Volgen in het notitieblok

De notebook powerbi_relationships_tutorial.ipynb begeleidt deze zelfstudie.

Als u het bijbehorende notitieblok voor deze zelfstudie wilt openen, volgt u de instructies in Uw systeem voorbereiden voor zelfstudies voor gegevenswetenschap om het notebook te importeren in uw werkruimte.

Als u liever de code van deze pagina kopieert en plakt, kunt u een nieuw notitieblok maken.

Zorg ervoor dat u een lakehouse aan het notebook koppelt voordat u begint met het uitvoeren van code.

Het notebook instellen

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

  1. Installeren 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 zelfstudie wordt gebruikgemaakt van een standaard semantisch model Customer Profitability Sample.pbix. Zie het voorbeeld klantwinstgevendheid voor Power BI voor een beschrijving van het semantische model.

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

    fabric.list_datasets()
    

Voor de rest van dit notebook gebruikt u 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 relaties die door Power BI automatisch worden gedetecteerd.

Een semantisch voorbeeldmodel extraheren met het vooraf gedefinieerde semantische model

  1. Laadrelaties die vooraf zijn gedefinieerd en zijn opgeslagen in het semantische voorbeeld van klantwinstgevendheid , met behulp van de functie van list_relationships SemPy. 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 functie van SemPy plot_relationship_metadata :

    plot_relationship_metadata(relationships)
    

    Schermopname van 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.

De detectie van relaties aanvullen

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 door Power BI automatisch zijn gedetecteerd in het semantische model.

    De automatische verwijdering van Power BI heeft veel relaties gemist. 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 SemPy's list_tables en read_table functies:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Zoek relaties tussen tabellen en gebruik 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 exclude parameter om de zoekopdracht te beperken tot aanvullende relaties die eerder niet 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 semantische model klantwinstgevendheidsvoorbeeld :

    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 refererende sleutelwaarden met behulp van de list_relationship_violations functie. 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 en Product[Product Key]deze ontbrekende sleutel is 50.

Verkennende gegevensanalyse is een spannend proces en dus gegevens opschonen. 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 zelfstudies voor semantische koppeling /SemPy: