Verwalten von semantischen Modellen mit dem XMLA-Endpunkt

Abgeschlossen

Das Versionssteuerelement verfolgt Änderungen an Ihren semantischen Modellen nach, überprüft jedoch nicht, ob das Modell korrekt ist. Eine umbenannte Spalte kann Beziehungen beeinträchtigen. Eine geänderte Maßnahme kann möglicherweise unerwartete Ergebnisse liefern. Der XMLA-Endpunkt bietet programmgesteuerten Zugriff auf semantische Modelle, sodass Sie sie über Code und externe Tools überprüfen, überprüfen und testen können.

Was ist der XMLA-Endpunkt?

Der XMLA-Endpunkt (XML für Analyse) ist das Protokoll, das Power BI für die Kommunikation zwischen Clientanwendungen und dem Modul verwendet, das semantische Modelle verwaltet. Jeder Fabric- oder Power BI Premium-Arbeitsbereich macht einen XMLA-Endpunkt verfügbar. Alle über das XMLA-Protokoll gesendeten Daten werden vollständig verschlüsselt.

Standardmäßig ist der Endpunkt für schreibgeschützten Zugriff aktiviert, sodass Sie Modelldaten und Metadaten abfragen können. Kapazitätsadministratoren können auch Lese-/Schreibzugriff für einen Arbeitsbereich aktivieren. Read-write schaltet zusätzliche Funktionalitäten frei, wie das Bereitstellen von Modelländerungen, das Ausführen von skriptgesteuerten Vorgängen und das Auslösen von Aktualisierungen durch externe Tools. Diese Einheit konzentriert sich auf Aufgaben, die Sie mit schreibgeschütztem Zugriff abschließen können.

Die Verbindungszeichenfolge des XMLA-Endpunkts folgt diesem Format:

powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name]

Die Connection-String weist auf den Arbeitsbereich hin. Nach dem Herstellen der Verbindung geben Sie an, welches semantische Modell abzufragen ist. In SemPy übergeben Sie den Modellnamen als Parameter. In Desktoptools wie DAX Studio oder Tabellarischer Editor wählen Sie das Modell als Datenbank oder anfänglichen Katalog aus.

Anwendungen, die mit Azure Analysis Services oder SQL Server Analysis Services arbeiten, arbeiten in der Regel mit Power BI über XMLA mit minimalen Konfigurationsänderungen.

SemPy in Fabric-Notebooks

SemPy ist die Python-Bibliothek in Fabric Notizbüchern, die eine Verbindung mit semantischen Modellen über den XMLA-Endpunkt herstellen. Es bietet eine Python native Möglichkeit, Metadaten zu prüfen, Struktur zu überprüfen und Berechnungen zu testen, ohne die Notizbuchumgebung zu verlassen. SemPy ist in Fabric Runtime 1.2 und höher enthalten, sodass Sie es nicht separat installieren müssen.

Überprüfen von Modellmetadaten

Verwenden Sie SemPy-Funktionen, um die Struktur eines veröffentlichten Semantikmodells zu untersuchen. Diese Funktionen geben DataFrames zurück, die Sie programmgesteuert filtern, sortieren und analysieren können:

import sempy.fabric as fabric

# List all tables in a semantic model
tables = fabric.list_tables("Sales Model", workspace="Sales Workspace")

# List columns for all tables
columns = fabric.list_columns("Sales Model", workspace="Sales Workspace")

# List all measures defined in the model
measures = fabric.list_measures("Sales Model", workspace="Sales Workspace")

Die Metadatenüberprüfung hilft Ihnen, ein unbekanntes Modell schnell zu verstehen. Sie können überprüfen, wie viele Tabellen ein Modell enthält, welche Spalten verfügbar sind und welche Berechnungen definiert sind, alles direkt aus einer Notizbuchzelle, anstatt Power BI Desktop zu öffnen.

Überprüfen von Beziehungen

Beziehungsfehler sind eine häufige Quelle falscher Berichtsergebnisse. Fremdschlüsselwerte, die nicht mit Primärschlüsselwerten übereinstimmen, erstellen verwaiste Zeilen, was zu leeren Zeilen in Berichten oder falschen Aggregationen führen kann:

# List all relationships in the model
relationships = fabric.list_relationships("Sales Model", workspace="Sales Workspace")

# Read tables into DataFrames and check for relationship violations (orphaned keys)
tables = {table: fabric.read_table("Sales Model", table, workspace="Sales Workspace")
          for table in fabric.list_tables("Sales Model", workspace="Sales Workspace")["Name"]}
violations = fabric.list_relationship_violations(tables)

Die list_relationship_violations() Funktion verwendet ein Wörterbuch von Tabellendatenframes und verwendet die Beziehungsmetadaten aus dem semantischen Modell, um die Datenintegrität zu überprüfen. Es gibt Zeilen zurück, in denen ein Fremdschlüsselwert in einer Tabelle keinen übereinstimmenden Primärschlüsselwert in der verknüpften Tabelle aufweist. Wenn das Ergebnis leer ist, sind alle Beziehungen intakt. Wenn Verstöße vorhanden sind, wissen Sie genau, welche Tabellen und Schlüssel Aufmerksamkeit benötigen, bevor das Modell in die Produktion geht.

Testen von Messmaßberechnungen

Überprüfen Sie, ob DAX-Measures erwartete Ergebnisse zurückgeben, indem Sie sie programmgesteuert auswerten. Dies ist nützlich, nachdem Sie Änderungen vorgenommen haben, um sicherzustellen, dass nichts fehlerhaft ist:

# Evaluate a specific measure grouped by dimensions
result = fabric.evaluate_measure(
    "Sales Model",
    measure="Total Revenue",
    groupby_columns=["Date[Year]", "Product[Category]"],
    workspace="Sales Workspace"
)

# Run a custom DAX query
dax_result = fabric.evaluate_dax(
    "Sales Model",
    'EVALUATE SUMMARIZECOLUMNS(Date[Year], "Revenue", [Total Revenue])',
    workspace="Sales Workspace"
)

Indem Sie die Ausgabe mit bekannten Werten vergleichen, erstellen Sie eine einfache Überprüfung. Wenn beispielsweise der Gesamtumsatz für 2024 ein bestimmter Betrag sein soll, können Sie diesen Wert in Python und Diskrepanzen automatisch kennzeichnen.

Überprüfen der Datenqualität

Lesen von Tabellendaten in ein FabricDataFrame, um die Datenqualität zu überprüfen. Ein FabricDataFrame ist ein Pandas DataFrame, der semantische Metadaten aus dem Modell bewahrt:

# Read a table and check for quality issues
df = fabric.read_table("Sales Model", "Customers", workspace="Sales Workspace")

# Check for null values in key columns
null_counts = df[["CustomerKey", "CustomerName"]].isnull().sum()
print(null_counts)

# Verify unique keys
duplicate_keys = df["CustomerKey"].duplicated().sum()
print(f"Duplicate customer keys: {duplicate_keys}")

Datenqualitätsprüfungen in Notizbüchern können wiederholbar sein. Sie können dasselbe Notizbuch vor jeder Bereitstellung ausführen, um Probleme zu erfassen, die bei der visuellen Überprüfung möglicherweise fehlen. Im Laufe der Zeit werden diese Notizbücher zu einer Validierungssuite für Ihre semantischen Modelle.

Überprüfen mit externen Tools

Externe Desktoptools stellen auch über den XMLA-Endpunkt eine Verbindung mit semantischen Modellen her. Diese Tools bieten interaktive Funktionen, die den automatisierten Ansatz von SemPy ergänzen:

  • MIT DAX Studio können Sie DAX-Abfragen interaktiv mit veröffentlichten Semantikmodellen schreiben und testen. Verwenden Sie es, um zu überprüfen, ob Maßnahmen vor der Bereitstellung erwartete Ergebnisse zurückgeben.
  • Mit dem tabellarischen Editor können Sie die Modellstruktur über eine visuelle Objektstruktur untersuchen und bearbeiten. Der Best Practice Analyzer (BPA) führt konfigurierbare Regeln aus, um strukturelle Probleme wie ausgeblendete Spalten, die in Measures referenziert werden, nicht genutzte Tabellen oder fehlende Beschreibungen zu identifizieren.
  • DAS ALM Toolkit vergleicht Schemas zwischen zwei semantischen Modellen, z. B. Entwicklung und Produktion, sodass Sie Unterschiede vor der Bereitstellung überprüfen können.

Der Fabric-Dienst enthält auch einen integrierten Best Practice Analyzer, den Sie direkt über das Kontextmenü eines semantischen Modells ausführen können. Es generiert ein Notizbuch, das mehr als 60 Regeln in fünf Kategorien überprüft: Leistung, DAX-Ausdrücke, Fehlerprävention, Wartung und Formatierung. Es ist keine Installation externer Tools erforderlich.

Alle drei externen Tools verwenden dieselbe XMLA-Verbindungszeichenfolge, die Sie auch in einem Notizbuch verwenden würden. Der Unterschied besteht aus Interaktivität: Wählen Sie diese Tools aus, wenn Sie visuelles Feedback in Echtzeit im Vergleich zu semPys skriptbasierter, wiederholbarer Überprüfung benötigen.

Wählen Sie den richtigen Ansatz

Sowohl SemPy als auch externe Tools greifen über XMLA auf semantische Modelle zu, dienen jedoch verschiedenen Workflows:

Aufgabe SemPy in Notizbüchern Externe Tools
Überprüfen von Modellmetadaten list_tables(), list_measures()list_columns() Tabellarischer Editor
Überprüfen von Beziehungen list_relationship_violations() Tabellarischer Editor
Testen von Messmaßberechnungen evaluate_measure(), evaluate_dax() DAX Studio
Überprüfen der Datenqualität read_table() mit Python-Assertions
Beste Vorgehensweise Prüfung Integrierte BPA aus dem semantischen Modellmenü erstellen Tabellarischer Editor BPA
Schemavergleich ALM Toolkit

Verwenden Sie SemPy, wenn Sie eine automatisierte, wiederholbare Überprüfung benötigen – führen Sie dasselbe Notizbuch vor jeder Bereitstellung aus, um strukturelle Probleme programmgesteuert abzufangen. Verwenden Sie externe Tools, wenn Sie interaktives Durchsuchen und Echtzeitfeedback auf dem Desktop benötigen.

Hinweis

Sowohl SemPy als auch externe Tools basieren auf dem XMLA-Endpunkt. Wenn der Endpunkt deaktiviert ist, funktioniert keine der beiden Ansätze. Überprüfen Sie, ob der Endpunkt im Kapazitätsverwaltungsportal aktiviert ist, bevor Sie beginnen.

Mit der programmgesteuerten Überprüfung ist die Überprüfungsphase abgeschlossen. Als Nächstes folgt die Deploy Stage - das Bereitstellen von getesteten Inhalten für die Produktion durch Pipelines.