Freigeben über


Tutorial: Beziehungen in einem semantischen Modell mithilfe von semantischen Links entdecken

In diesem Tutorial wird veranschaulicht, wie Sie mit Power BI aus einem Jupyter-Notizbuch interagieren und Beziehungen zwischen Tabellen mithilfe der SemPy-Bibliothek erkennen.

In diesem Tutorial lernen Sie Folgendes:

  • Beziehungen in einem semantischen Modell (Power BI-Dataset) mithilfe der Python-Bibliothek von semantischen Links (SemPy) entdecken.
  • Verwenden Sie Komponenten von SemPy, welche die Integration in Power BI unterstützen und die Datenqualitätsanalyse automatisieren. Zu diesen Komponenten gehören:
    • FabricDataFrame: eine Pandas-ähnliche Struktur, die um zusätzliche semantische Informationen erweitert wurde.
    • Funktionen zum Abrufen von semantischen Modellen aus einem Fabric-Arbeitsbereich in Ihr Notizbuch.
    • Funktionen, welche die Auswertung von Hypothesen zu funktionalen Abhängigkeiten automatisieren und Verstöße gegen Beziehungen in Ihren semantischen Modellen identifizieren.

Voraussetzungen

  • Wählen Sie im linken Navigationsbereich Arbeitsbereiche aus, um Ihren Arbeitsbereich zu suchen und auszuwählen. Dieser Arbeitsbereich wird zu Ihrem aktuellen Arbeitsbereich.

  • Laden Sie die semantischen Modelle Customer Profitability Sample.pbix- und das Customer Profitability Sample (auto).pbix aus dem GitHub-Repository für Fabric-Beispiele herunter, und laden Sie sie in Ihren Arbeitsbereich hoch.

Das Notebook für das Tutorial

Das powerbi_relationships_tutorial.ipynb-Notizbuch begleitet dieses Tutorial.

Um das zugehörige Notebook für dieses Tutorial zu öffnen, befolgen Sie die Anweisungen unter Vorbereiten Ihres Systems für Data-Science-Tutorials zum Importieren des Notebooks in Ihren Arbeitsbereich.

Wenn Sie den Code lieber von dieser Seite kopieren und einfügen möchten, können Sie auch ein neues Notebook erstellen.

Fügen Sie unbedingt ein Lakehouse an das Notebook an, bevor Sie mit der Ausführung von Code beginnen.

Einrichten des Notebooks

In diesem Abschnitt richten Sie eine Notizbuchumgebung mit den erforderlichen Modulen und Daten ein.

  1. Installieren Sie SemPy über PyPI mithilfe der %pip-Inlineinstallationsfunktion innerhalb des Notizbuchs:

    %pip install semantic-link
    
  2. Führen Sie die erforderlichen Importvorgänge von Modulen durch, die Sie später benötigen:

    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 Pandas zum Erzwingen einer Konfigurationsoption, die bei der Ausgabeformatierung hilft:

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

Entdecken von semantischen Modellen

In diesem Tutorial wird ein standardmäßiges semantisches Beispielmodell Customer Profitability Sample.pbix verwendet. Eine Beschreibung des semantischen Modells finden Sie unter Customer Profitability-Beispiel für Power BI.

  • Verwenden Sie die SemPy list_datasets Funktion, um semantische Modelle in Ihrem aktuellen Arbeitsbereich zu erkunden:

    fabric.list_datasets()
    

Für den Rest dieses Notebooks verwenden Sie zwei Versionen des semantischen Modells Customer Profitability-Beispiel:

  • Beispiel für die Kundenrentabilität: Das Dataset aus Power BI-Beispielen mit vordefinierten Tabellenbeziehungen
  • Beispiel für die Kundenrentabilität (auto): Dieselben Daten, aber die Beziehungen sind auf diejenigen beschränkt, die Power BI automatisch ermitteln würde.

Extrahieren eines Beispiels für ein semantisches Modell mit seinem vordefinierten semantischen Modell

  1. Laden von Beziehungen, die im semantischen Modell der Kundenprofitabilität vordefiniert und gespeichert sind, mithilfe der SemPy list_relationships Funktion. Diese Funktion führt aus dem Tabellarischen Objektmodell 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 von SemPy:

    plot_relationship_metadata(relationships)
    

    Screenshot einer Zeichnung der Beziehungen zwischen Tabellen im semantischen Modell.

Dieses Diagramm zeigt die „Bodenwahrheit“ für Beziehungen zwischen Tabellen in diesem semantischen Modell, da es widerspiegelt, wie sie in Power BI von einem Fachexperten definiert wurden.

Ergänzen der Beziehungsermittlung

Wenn Sie mit Beziehungen begonnen haben, die von Power BI automatisch erkannt werden, verfügen Sie über einen kleineren Satz.

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

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

    Screenshot: Visualisieren Sie die Beziehungen, die Power BI automatisch im sematischen Modell erkannt hat.

    Die automatische Erkennung von Power BI hat viele Beziehungen verpasst. Darüber hinaus sind zwei der automatisch erkannten Beziehungen semantisch falsch:

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

    autodetected
    

    Falsche Beziehungen zur Industry-Tabelle werden in Zeilen mit Index 3 und 4 angezeigt. Verwenden Sie diese Informationen, um diese Zeilen zu entfernen.

  3. Verwerfen Sie die falsch identifizierten Beziehungen.

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

    Jetzt haben Sie die richtigen, aber unvollständigen Beziehungen.

  4. 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.

  5. Laden Sie alle Tabellen aus dem semantischen Modell mithilfe von SemPys list_tables und read_table Funktionen:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Suchen Sie Beziehungen zwischen Tabellen mithilfe von find_relationships und überprüfen Sie die Protokollausgabe, um einige 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
    )
    
  7. Visualisieren Sie neu ermittelte Beziehungen:

    plot_relationship_metadata(suggested_relationships_all)
    

    Screenshot, der die Visualisierung neu entdeckter Beziehungen zeigt.

    SemPy konnte alle Beziehungen erkennen.

  8. Verwenden Sie den exclude-Parameter, 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 der Beziehungen

  1. Laden Sie zunächst die Daten aus dem semantischen Modell-Beispiel zur Kundenrentabilität:

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Suchen Sie mithilfe der list_relationship_violations-Funktion nach Überlappungen von Primär- und Fremdschlüsselwerten. Geben Sie die Ausgabe der list_relationships-Funktion als Input an list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Die Beziehungsverstöße bieten einige interessante Einblicke. Beispielsweise ist einer von sieben Werten in Fact[Product Key] nicht in Product[Product Key] vorhanden, und dieser fehlende Schlüssel ist 50.

Explorative Datenanalyse und auch Datenreinigung sind spannende Prozesse. Es gibt immer etwas, was die Daten verstecken, je nachdem, wie Sie sie betrachten, was Sie fragen möchten und so weiter. Semantic Link bietet Ihnen neue Tools, mit denen Sie mehr mit Ihren Daten erreichen können.

Sehen Sie sich weitere Tutorials zu Semantic Link und SemPy an: