Freigeben über


Lernprogramm: Ermitteln von Beziehungen in einem semantischen Modell mit semantischer Verknüpfung

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

In diesem Lernprogramm erfahren Sie, wie Sie:

  • Ermitteln von Beziehungen in einem semantischen Modell (Power BI-Dataset) mithilfe der Python-Bibliothek des semantischen Links (SemPy).
  • Verwenden Sie Komponenten von SemPy, die die Integration in Power BI unterstützen und die Datenanalyse automatisieren. Zu diesen Komponenten gehören:
    • FabricDataFrame – eine pandasähnliche Struktur, die mit zusätzlichen semantischen Informationen erweitert wurde.
    • Funktionen zum Abrufen von semantischen Modellen aus einem Fabric-Arbeitsbereich in Ihr Notizbuch.
    • Funktionen, die die Auswertung von Hypothesen zu funktionsbezogenen Abhängigkeiten automatisieren und Verstöße gegen Beziehungen in Ihren semantischen Modellen identifizieren.

Voraussetzungen

  • Wählen Sie Arbeitsbereiche im linken Navigationsbereich 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 Customer Profitability Sample (auto).pbix aus dem GitHub-Repository Fabric-Beispiele herunter, und laden Sie diese in Ihren Arbeitsbereich hoch.

Notebook für das Tutorial

In diesem Tutorial wird das Notebook powerbi_relationships_tutorial.ipynb verwendet.

Einrichten des Notizbuchs

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

  1. Installieren Sie SemPy von PyPI mithilfe der %pip Inlineinstallationsfunktion im Notizbuch:

    %pip install semantic-link
    
  2. Führen Sie die erforderlichen Importe von SemPy-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, um eine Konfigurationsoption durchzusetzen, die bei der Ausgabeformatierung hilft.

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

Erkunden von semantischen Modellen

In diesem Tutorial wird das Standardbeispiel für ein semantisches Modell namens Customer Profitability Sample.pbix verwendet. Eine Beschreibung des semantischen Modells finden Sie unter Beispiel für die Kundenrentabilität für Power BI.

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

    fabric.list_datasets()
    

Für den Rest dieses Notebooks verwenden Sie zwei Versionen des semantischen Beispielmodells zur Kundenrentabilität:

  • Beispiel zur Kundenrentabilität: Das semantische Modell, wie es aus Power BI-Beispielen mit vordefinierten Tabellenbeziehungen stammt
  • Beispiel für die Kundenrentabilität (auto): die selben Daten, aber Beziehungen sind auf diejenigen beschränkt, die Power BI automatisch erkennt.

Extrahieren eines semantischen Beispielmodells mit dem zugehörigen vordefinierten semantischen Modell

  1. Laden Sie mithilfe der list_relationships-Funktion von SemPy Beziehungen, die im semantischen Modell Beispiel für Kundenrentabilität vordefiniert und gespeichert sind. Diese Funktion listet aus dem Tabellarischen Objektmodell auf:

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

    plot_relationship_metadata(relationships)
    

    Screenshot mit einer Darstellung der Beziehungen zwischen Tabellen im semantischen Modell.

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

Entdeckung komplementärer Beziehungen

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

  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 mit den Beziehungen, die Power BI automatisch im semantischen 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. Drucken 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 mit einer Visualisierung von Beziehungen nach dem Entfernen falscher Beziehungen.

  5. Laden Sie alle Tabellen aus dem semantischen Modell, indem Sie semPys list_tables und read_table Funktionen verwenden:

    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 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 der Beziehungen

  1. Laden Sie zunächst die Daten aus dem Kundenrentabilitätsbeispiel semantischen Modell:

    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 Eingabe für list_relationship_violations an:

    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] in Product[Product Key]nicht vorhanden, und dieser fehlende Schlüssel ist 50.

Explorative Datenanalyse ist ein spannender Prozess, und die Datenreinigung genauso. Es gibt immer etwas, was die Daten verbergen, je nachdem, wie Sie sie betrachten, was Sie fragen möchten und so weiter. Der semantische Link bietet Ihnen neue Tools, mit denen Sie mehr mit Ihren Daten erreichen können.

Schauen Sie sich weitere Lernprogramme für semantischen Link / SemPy an: