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
Holen Sie sich ein Microsoft Fabric-Abonnement. Oder registrieren Sie sich für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabrican.
Verwenden Sie den Erfahrungsschalter auf der unteren linken Seite Ihrer Startseite, um zu Fabric zu wechseln.
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.
Zum Öffnen des zugehörigen Notizbuchs für dieses Lernprogramm folgen Sie den Anweisungen in Vorbereiten Ihres Systems für Data Science-Lernprogramme, um das Notizbuch in Ihren Arbeitsbereich zu importieren.
Wenn Sie den Code lieber von dieser Seite kopieren und einfügen möchten, können Sie ein neues Notizbucherstellen.
Fügen Sie ein Lakehouse an das Notebook an, bevor Sie mit der Ausführung von Code beginnen.
Einrichten des Notizbuchs
In diesem Abschnitt richten Sie eine Notizbuchumgebung mit den erforderlichen Modulen und Daten ein.
Installieren Sie
SemPy
von PyPI mithilfe der%pip
Inlineinstallationsfunktion im Notizbuch:%pip install semantic-link
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
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
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
Visualisieren Sie das
relationships
DataFrame als Diagramm mithilfe derplot_relationship_metadata
-Funktion von SemPy:plot_relationship_metadata(relationships)
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.
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)
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]
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.Verwerfen Sie die falsch identifizierten Beziehungen.
autodetected.drop(index=[3,4], inplace=True) autodetected
Jetzt haben Sie die richtigen, aber unvollständigen Beziehungen.
Visualisieren Sie diese unvollständigen Beziehungen mithilfe von
plot_relationship_metadata
:plot_relationship_metadata(autodetected)
Laden Sie alle Tabellen aus dem semantischen Modell, indem Sie semPys
list_tables
undread_table
Funktionen verwenden:tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
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 )
Visualisieren sie neu ermittelte Beziehungen:
plot_relationship_metadata(suggested_relationships_all)
SemPy konnte alle Beziehungen erkennen.
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
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()
Suchen Sie mithilfe der
list_relationship_violations
-Funktion nach Überlappungen von Primär- und Fremdschlüsselwerten. Geben Sie die Ausgabe derlist_relationships
-Funktion als Eingabe fürlist_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]
inProduct[Product Key]
nicht vorhanden, und dieser fehlende Schlüssel ist50
.
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.
Verwandte Inhalte
Schauen Sie sich weitere Lernprogramme für semantischen Link / SemPy an:
- Lernprogramm: Bereinigen von Daten mit funktionalen Abhängigkeiten
- Lernprogramm: Analysieren funktionaler Abhängigkeiten in einem Beispielsemantikmodell
- Lernprogramm: Extrahieren und Berechnen von Power BI-Measures aus einem Jupyter-Notizbuch
- Lernprogramm: Entdecken von Beziehungen im Synthea--Dataset mit semantischer Verknüpfung
- Lernprogramm: Überprüfen von Daten mithilfe von SemPy and Great Expectations (GX)