Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Tutorial bauen Sie auf der Arbeit eines Power BI-Analysten auf, die als semantische Modelle (Power BI-Datensätze) gespeichert ist. Durch die Verwendung von SemPy (Vorschau) in der Fabric Data Science Workload analysieren Sie funktionale Abhängigkeiten in DataFrame-Spalten. Diese Analyse hilft Ihnen, subtile Probleme mit der Datenqualität zu ermitteln, um genauere Erkenntnisse zu erhalten.
In diesem Lernprogramm erfahren Sie, wie Sie:
- Wenden Sie Domänenwissen an, um Hypothesen zu funktionalen Abhängigkeiten in einem semantischen Modell zu formulieren.
- Machen Sie sich mit den Komponenten der Python-Bibliothek von Semantic Link (SemPy) vertraut, die sich in Power BI integrieren und bei der Automatisierung der Datenqualitätsanalyse helfen. Zu diesen Komponenten gehören:
- FabricDataFrame – pandasähnliche Struktur mit zusätzlichen semantischen Informationen verbessert
- Funktionen, die semantische Modelle aus einem Fabric-Arbeitsbereich in Ihr Notizbuch ziehen
- Funktionen, die funktionsbezogene Abhängigkeitshypothesen auswerten und Beziehungsverstöße in Ihren semantischen Modellen identifizieren
Voraussetzungen
Erhalten Sie ein Microsoft Fabric-Abonnement. Oder registrieren Sie sich für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabrican.
Wechseln Sie zu Fabric, indem Sie den Benutzeroberflächenschalter auf der unteren linken Seite Ihrer Startseite verwenden.
Wählen Sie im Navigationsbereich Arbeitsbereiche aus, um Ihren Arbeitsbereich zu suchen und auszuwählen. Dieser Arbeitsbereich wird zu Ihrem aktuellen Arbeitsbereich.
Laden Sie die Datei "Customer Profitability Sample.pbix " aus dem GitHub-Repository der Fabric-Beispiele herunter.
Wählen Sie in Ihrem Arbeitsbereich Importieren>Bericht oder Paginierter Bericht>Von diesem Computer aus, um die Datei Customer Profitability Sample.pbix in Ihren Arbeitsbereich hochzuladen.
Notebook für das Tutorial
Das Notebook powerbi_dependencies_tutorial.ipynb wird in diesem Tutorial 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 unbedingt ein Lakehouse an das Notebook an, bevor Sie mit der Ausführung von Code beginnen.
Einrichten des Notizbuchs
Richten Sie eine Notizbuchumgebung mit den benötigten Modulen und Daten ein.
Verwenden Sie
%pip, um SemPy aus PyPI im Notebook zu installieren.%pip install semantic-linkImportieren Sie die benötigten Module.
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Laden und Vorverarbeitung der Daten
In diesem Tutorial wird ein standardmäßiges Beispielsemantikmodell Customer Profitability Sample.pbix verwendet. Eine Beschreibung des semantischen Modells finden Sie unter Beispiel für die Kundenrentabilität für Power BI.
Laden Sie Power BI-Daten mithilfe der Funktion
fabric.read_tablein einFabricDataFrame.dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()Laden Sie die
StateTabelle in eineFabricDataFrame.state = fabric.read_table(dataset, "State") state.head()Obwohl die Ausgabe wie ein pandas-DataFrame aussieht, initialisiert dieser Code eine Datenstruktur namens
FabricDataFrame, die pandas um zusätzliche Operationen erweitert.Überprüfen Sie den Datentyp von
customer.type(customer)Die Ausgabe zeigt, dass
customersempy.fabric._dataframe._fabric_dataframe.FabricDataFrameist.Verbinden Sie die
customerundstateDataFrameObjekte.customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Identifizieren funktionaler Abhängigkeiten
Eine funktionale Abhängigkeit ist eine Eins-zu-viele-Beziehung zwischen Werten in zwei oder mehr Spalten in einem DataFrame. Verwenden Sie diese Beziehungen, um Probleme mit der Datenqualität automatisch zu erkennen.
Führen Sie SemPys
find_dependencies-Funktion auf dem zusammengeführtenDataFrameaus, um funktionale Abhängigkeiten zwischen Spaltenwerten zu identifizieren.dependencies = customer_state_df.find_dependencies() dependenciesVisualisieren Sie die Abhängigkeiten mithilfe der SemPy-Funktion
plot_dependency_metadata.plot_dependency_metadata(dependencies)Der Graph der funktionalen Abhängigkeiten zeigt, dass die Spalte
CustomerSpalten wieCity,Postal CodeundNamebestimmt.Das Diagramm zeigt keine funktionale Abhängigkeit zwischen
CityundPostal Code, wahrscheinlich, weil es viele Verstöße in der Beziehung zwischen den Spalten gibt. Verwenden Sie die Funktion semPy,plot_dependency_violationsum Abhängigkeitsverstöße zwischen bestimmten Spalten zu visualisieren.
Untersuchen Sie die Daten auf Qualitätsprobleme
Zeichnen Sie ein Diagramm mit der
plot_dependency_violationsVisualisierungsfunktion von SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Das Diagramm der Abhängigkeitsverstöße zeigt auf der linken Seite Werte für
Postal Codeund auf der rechten Seite Werte fürCityan. Ein Rand verbindet einePostal Codeauf der linken Seite mit einemCityauf der rechten Seite, wenn eine Zeile mit diesen beiden Werten vorhanden ist. Die Linien enthalten einen Kommentar mit der Anzahl der entsprechenden Zeilen. Beispielsweise gibt es zwei Zeilen mit Postleitzahl 20004, eine mit der Stadt "North Tower" und die andere mit der Stadt "Washington".Das Diagramm zeigt außerdem einige Verstöße und viele leere Werte.
Bestätigen Sie die Anzahl leerer Werte für
Postal Code:customer_state_df['Postal Code'].isna().sum()50 Zeilen weisen für
Postal CodeNA auf.Zeilen mit leeren Werten ablegen. Suchen Sie dann Abhängigkeiten mithilfe der
find_dependencies-Funktion. Beachten Sie den zusätzlichen Parameterverbose=1, der einen Einblick in die internen Arbeiten von SemPy bietet:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)Die bedingte Entropie für
Postal CodeundCitybeträgt 0,049. Dieser Wert gibt an, dass funktionsbezogene Abhängigkeitsverletzungen vorliegen. Bevor Sie die Verletzungen beheben, erhöhen Sie den Schwellenwert für die bedingte Entropie vom Standardwert0.01auf0.05, um nur die Abhängigkeiten anzuzeigen. Niedrigere Schwellenwerte führen zu weniger Abhängigkeiten (oder höherer Selektivität).Erhöhen Sie den Schwellenwert für die bedingte Entropie vom Standardwert
0.01auf0.05:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))Wenn Sie Domänenwissen darüber anwenden, welche Entität die Werte anderer Entitäten bestimmt, scheint dieses Abhängigkeitsdiagramm genau zu sein.
Erkunden Sie weitere Probleme mit der Datenqualität, die erkannt wurden. Beispielsweise verbindet ein gestrichelter Pfeil
CityundRegion, was darauf hinweist, dass die Abhängigkeit nur ungefähr ist. Diese ungefähre Beziehung könnte bedeuten, dass es eine teilweise funktionale Abhängigkeit gibt.customer_state_df.list_dependency_violations('City', 'Region')Werfen Sie einen genaueren Blick auf die einzelnen Fälle, in denen ein nicht leerer
RegionWert eine Verletzung verursacht.customer_state_df[customer_state_df.City=='Downers Grove']Das Ergebnis zeigt die Stadt Downers Grove in Illinois und Nebraska. Downers Grove ist jedoch eine Stadt in Illinois, nicht Nebraska.
Sehen Sie sich die Stadt Fremontan:
customer_state_df[customer_state_df.City=='Fremont']Es gibt eine Stadt namens Fremont in Kalifornien. Für Texas gibt die Suchmaschine jedoch Premontzurück, nicht Fremont.
Es ist auch auffällig, dass Verstöße gegen die Abhängigkeit zwischen
NameundCountry/Regionfestzustellen sind, wie durch die gepunktete Linie im ursprünglichen Diagramm der Abhängigkeitsverletzungen (vor dem Entfernen der Zeilen mit leeren Werten) dargestellt.customer_state_df.list_dependency_violations('Name', 'Country/Region')Ein Kunde, SDI Design, erscheint in zwei Regionen – USA und Kanada. In diesem Fall kann es sich nicht um eine semantische Verletzung handeln, nur ungewöhnlich. Dennoch lohnt es sich, einen genauen Blick zu werfen:
Werfen Sie einen genaueren Blick auf den Kunden SDI Design:
customer_state_df[customer_state_df.Name=='SDI Design']Weitere Inspektionen zeigen zwei unterschiedliche Kunden aus verschiedenen Branchen mit demselben Namen.
Explorative Datenanalyse und Datenreinigung sind iterativ. Was Sie finden, hängt von Ihren Fragen und Ihrer Perspektive ab. Der semantische Link bietet Ihnen neue Tools, um mehr von Ihren Daten zu erhalten.
Verwandte Inhalte
Sehen Sie sich weitere Lernprogramme für semantischen Link und SemPy an:
- Lernprogramm: Bereinigen von Daten mit funktionalen Abhängigkeiten
- Lernprogramm: Extrahieren und Berechnen von Power BI-Measures aus einem Jupyter-Notizbuch
- Lernprogramm: Entdecken von Beziehungen in einem Semantikmodell mithilfe von semantischen Verknüpfungen
- Lernprogramm: Ermitteln von Beziehungen im Synthea-Dataset mit semantischer Verknüpfung
- Lernprogramm: Überprüfen von Daten mithilfe von SemPy and Great Expectations (GX)