Freigeben über


Ermitteln von Beziehungen in einem semantischen Modell mithilfe der semantischen Verknüpfung

In diesem Lernprogramm wird gezeigt, wie Sie ein Jupyter-Notizbuch verwenden, um mit Power BI zu interagieren und Beziehungen zwischen Tabellen mit der SemPy-Bibliothek zu erkennen.

In diesem Lernprogramm erfahren Sie, wie Sie:

  • Entdecken Sie Beziehungen in einem Semantikmodell (Power BI-Dataset) mithilfe der Python-Bibliothek (SemPy) des semantischen Links.
  • Verwenden Sie SemPy-Komponenten, die in Power BI integriert sind, und automatisieren Sie die Datenanalyse. Zu diesen Komponenten gehören:
    • FabricDataFrame - eine pandasähnliche Struktur, die mit semantischen Informationen erweitert wird
    • Funktionen, die semantische Modelle aus einem Fabric-Arbeitsbereich in Ihr Notizbuch ziehen
    • Funktionen, die funktionsbezogene Abhängigkeiten testen und Beziehungsverstöße in Ihren semantischen Modellen identifizieren

Voraussetzungen

  • Wechseln Sie im Navigationsbereich zu "Arbeitsbereiche ", und wählen Sie dann Ihren Arbeitsbereich aus, um ihn als aktuellen Arbeitsbereich festzulegen.

  • Laden Sie die Kundenrentabilität Beispiel.pbix und die Kundenrentabilität Beispiel (auto).pbix-Semantikmodelle aus dem fabric-samples GitHub-Repository herunter und laden Sie sie dann in Ihren Arbeitsbereich hoch.

Notebook für das Tutorial

Verwenden Sie das powerbi_relationships_tutorial.ipynb-Notizbuch , um ihnen zu folgen.

Einrichten des Notizbuchs

Richten Sie eine Notizbuchumgebung mit den benötigten Modulen und Daten ein.

  1. Installieren Sie das semantic-link Paket von PyPI mithilfe des %pip Inlinebefehls im Notizbuch.

    %pip install semantic-link
    
  2. Importieren Sie die sempy Module, die Sie später verwenden werden.

    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. Importieren Sie die pandas Bibliothek, und legen Sie eine Anzeigeoption für die Ausgabeformatierung fest.

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

## Explore semantic models

This tutorial uses the Customer Profitability Sample semantic model [_Customer Profitability Sample.pbix_](https://github.com/microsoft/fabric-samples/blob/main/docs-samples/data-science/datasets/Customer%20Profitability%20Sample.pbix). Learn about the semantic model in [Customer Profitability sample for Power BI](/power-bi/create-reports/sample-customer-profitability).

- Use SemPy's `list_datasets` function to explore semantic models in your current workspace:

  ```python
  fabric.list_datasets()

Verwenden Sie für den Rest dieses Notizbuchs zwei Versionen des Kundenprofitabilitäts-Semantikmodells.

  • Beispiel für die Kundenrentabilität: das semantische Modell, wie in den Power BI-Beispielen mit vordefinierten Tabellenbeziehungen angegeben
  • Beispiel für die Kundenrentabilität (auto): dieselben Daten, aber Beziehungen sind auf diejenigen beschränkt, die von Power BI automatisch erfasst werden

Extrahieren vordefinierter Beziehungen aus dem Beispielsemantikmodell

  1. Laden Sie die vordefinierten Beziehungen im Semantikmodell des Kundenrentabilitätsbeispiels mithilfe der Funktion list_relationships von SemPy. Die Funktion listet Beziehungen aus dem Tabellarischen Objektmodell (TOM) auf.

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualisieren Sie den relationships DataFrame als Diagramm mithilfe der plot_relationship_metadata Funktion SemPy.

    plot_relationship_metadata(relationships)
    

    Screenshot des Diagramms

    Dieses Diagramm zeigt die Beziehungen zwischen Tabellen in diesem semantischen Modell, wie in Power BI von einem Fachexperten definiert.

Ermitteln zusätzlicher Beziehungen

Wenn Sie mit Beziehungen beginnen, die von Power BI automatisch erkannt werden, haben Sie eine kleinere Datenmenge.

  1. Visualisieren Sie die Beziehungen, die Power BI automatisch im Semantikmodell erkannt hat:

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

    Screenshot der Beziehungen, die Power BI automatisch im Semantikmodell erkannt hat.

    Die automatische Erkennung von Power BI übersieht viele Beziehungen. Außerdem sind zwei der automatisch erkannten Beziehungen semantisch falsch:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Drucken der Beziehungen als Tabelle:

    autodetected
    

    Die Zeilen 3 und 4 weisen falsche Beziehungen zu der Tabelle Industry auf. Entfernen Sie diese Zeilen.

  3. Verwerfen Sie die falsch identifizierten Beziehungen.

    # Remove rows 3 and 4 which point incorrectly to Industry[ID]
    autodetected = autodetected[~autodetected.index.isin([3, 4])]
    

    Jetzt haben Sie korrekte, aber unvollständige Beziehungen. Visualisieren Sie diese unvollständigen Beziehungen mithilfe von plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Screenshot einer Visualisierung von Beziehungen nach dem Entfernen falscher Beziehungen.

  4. Laden Sie alle Tabellen aus dem semantischen Modell mithilfe von SemPys list_tables und read_table Funktionen, und suchen Sie dann Beziehungen zwischen Tabellen mithilfe find_relationshipsvon . Überprüfen Sie die Protokollausgabe, um Einblicke in die Funktionsweise dieser Funktion zu erhalten:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  5. Visualisieren sie neu ermittelte Beziehungen:

    plot_relationship_metadata(suggested_relationships_all)
    

    Screenshot einer Visualisierung neu entdeckter Beziehungen.

    SemPy erkennt alle Beziehungen.

  6. Verwenden Sie den parameter exclude, um die Suche auf zusätzliche Beziehungen zu beschränken, die zuvor nicht identifiziert wurden:

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

Überprüfen von Beziehungen

  1. Laden Sie zunächst Daten aus dem Semantikmodell des Kundenrentabilitätsbeispiels .

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Überprüfen Sie, ob sich der Primär- und Fremdschlüssel mit der list_relationship_violations Funktion überlappen. Übergeben Sie die Ausgabe der list_relationships Funktion an list_relationship_violations.

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Die Ergebnisse zeigen nützliche Einblicke. Beispielsweise ist einer von sieben Werten in Fact[Product Key]Product[Product Key]nicht vorhanden, und der fehlende Schlüssel ist 50.

    Explorative Datenanalyse und Datenreinigung sind iterativ. Was Sie lernen, hängt von Ihren Fragen ab und wie Sie die Daten untersuchen. Der semantische Link fügt Tools hinzu, mit denen Sie mehr mit Ihren Daten erledigen können.

Erkunden Sie weitere Lernprogramme für semantischen Link und SemPy:

\n\n