Freigeben über


Power BI-Konnektivität mit Semantic Link

Power BI-Konnektivität ist das Herzstück von Semantic Link in Microsoft Fabric. Dieser Artikel beschreibt, wie Semantic Link Konnektivität mit semantischen Modellen für Benutzer*innen der Python-Pandas- und Apache Spark-Ökosysteme bereitstellt.

Ein semantisches Modell stellt in der Regel einen hohen Datenstandard dar, der das Resultat von Upstream-Datenverarbeitung und -verfeinerung ist. Business Analysts können:

  • Domänenwissen und Geschäftslogik in Power BI-Measures codieren.
  • Power BI-Berichte mithilfe von semantischen Modellen erstellen.
  • Verwenden Sie diese Berichte, um Geschäftsentscheidungen voranzutreiben.

Wenn wissenschaftliche Fachkräfte für Daten mit den gleichen semantischen Modellen versuchen, Geschäftslogik in verschiedenen Codeumgebungen oder Sprachen zu duplizieren, können kritische Fehler auftreten. Semantic Link überbrückt die Lücke zwischen semantischen Modellen und der Synapse Data Science in der Microsoft Fabric-Erfahrung, um es Business Analysts und wissenschaftlichen Fachkräften für Daten zu ermöglichen, nahtlos zusammenzuarbeiten und Datenkonflikten zu reduzieren.

Semantic Link bietet Konnektivität zu:

  • Python Pandas-Ökosystem über die SemPy Python-Bibliothek.
  • Semantische Modelle über den nativen Spark-Connector , der PySpark, Spark SQL, R und Scala unterstützt.

Datenkonnektivität über die SemPy Python-Bibliothek für Pandas-Benutzer

Die SemPy Python-Bibliothek ist Teil des Semantic Link-Features und richtet sich an Pandas-Benutzer*innen. Die SemPy-Funktionalität schließt Datenabruf aus Tabellen, Berechnungsergebnissen von Measuresund Ausführungen von Abfragen von Data Analysis Expressions (DAX) und Metadaten ein.

  • Für Spark 3.4 und höher ist Semantic Link bei Verwendung von Fabric in der Standardlaufzeit verfügbar und muss nicht installiert werden.

  • Führe für Spark 3.3 oder niedriger oder zum Aktualisieren auf die neueste Version von Semantic Link den folgenden Befehl aus:

    %pip install -U semantic-link
    

SemPy erweitert auch Pandas-DataFrames mit Metadaten, die aus der Power BI-Datenquelle heraus verteilt wurden. Die Metadaten umfassen:

  • Power BI-Datenkategorien:
    • Geografisch: Adresse, Ort, Stadt
    • URL: Web-URL, Bild-URL
    • Strichcode
  • Beziehungen zwischen Tabellen
  • Hierarchien

Mit dem nativen Spark-Connector für Semantic Link können Spark-Benutzer*innen auf Power BI-Tabellen und -Measures zugreifen. Der Connector ist sprachunabhängig und unterstützt PySpark, Spark SQL, R und Scala.

Um den nativen Spark-Connector einzusetzen, stellen Sie semantische Modelle als Spark-Namespaces dar und machen Sie Power BI-Tabellen als Spark-Tabellen transparent verfügbar.

Mit dem folgenden Befehl wird Spark so konfiguriert, dass der native Power BI Spark-Konnektor für Spark SQL eingesetzt wird:

spark.conf.set("spark.sql.catalog.pbi", "com.microsoft.azure.synapse.ml.powerbi.PowerBICatalog")

# Optionally, configure the workspace using its ID
# Resolve workspace name to ID using fabric.resolve_workspace_id("My workspace")
# Replace 00000000-0000-0000-0000-000000000000 with your own workspace ID
# spark.conf.set("spark.sql.catalog.pbi.workspace, "00000000-0000-0000-0000-000000000000")

Mit dem folgenden Befehl werden alle Tabellen in einem semantischen Modell namens Sales Dataset aufgelistet:

%%sql
SHOW TABLES FROM pbi.`Sales Dataset`

Mit dem folgenden Befehl werden Daten aus der Tabelle Customer im semantischen Modell Sales Dataset angezeigt:

%%sql
SELECT * FROM pbi.`Sales Dataset`.Customer

Power BI-Measures sind über die virtuelle _Metrics-Tabelle zugänglich, um relationale Spark SQL mit mehrdimensionaler Power BI zu überbrücken. Im folgenden Beispiel sind Total Revenue und Revenue Budget Measures, die im semantischen Modell Sales Dataset definiert sind, und die anderen Spalten sind Dimensionen. Aggregationsfunktionen wie AVG werden für Measures ignoriert und sind nur vorhanden, um Konsistenz mit SQL bereitzustellen.

Der Konnektor unterstützt Prädikatspushdown von Berechnungsergebnissen wie Customer[State] in ('CA', 'WA') von Spark-Ausdrücken in die Power BI-Engine, um den Einsatz der für Power BI optimierten Engine zu ermöglichen.

SELECT
    `Customer[Country/Region]`,
    `Industry[Industry]`,
    AVG(`Total Revenue`),
    AVG(`Revenue Budget`)
FROM
    pbi.`Sales Dataset`.`_Metrics`
WHERE
    `Customer[State]` in ('CA', 'WA')
GROUP BY
    `Customer[Country/Region]`,
    `Industry[Industry]`

Datenerweiterung mit Power BI-Measures

Die Operation add_measure ist ein leistungsfähiges Feature von Semantic Link, mit dem Sie Daten mit Measures aus semantischen Modellen erweitern können. Diese Operation ist nur in der SemPy Python-Bibliothek verfügbar und wird vom nativen Spark-Konnektor nicht unterstützt. Weitere Informationen zur Methode add_measure finden Sie in add_measure in der Klassendokumentation FabricDataFrame.

Um SemPy Python-Bibliothek einzusetzen, installieren Sie sie in Ihrem Notebook-Kernel, indem Sie folgenden Code in einer Notebook-Zelle ausführen:

# %pip and import only needs to be done once per notebook
%pip install semantic-link
from sempy.fabric import FabricDataFrame

Im folgenden Codebeispiel wird davon ausgegangen, dass Sie über ein vorhandenes FabricDataFrame mit Daten verfügen, die Sie mit Measures aus einem semantischen Modell erweitern möchten.

df = FabricDataFrame({
        "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"],
        "Customer[Country/Region]": ["US", "GB", "US"],
        "Industry[Industry]": ["Services", "CPG", "Manufacturing"],
    }
)

joined_df = df.add_measure(["Total Revenue", "Total Budget"], dataset="Sales Dataset")

Die Methode add_measure führt folgende Schritte aus:

  1. Löst Spaltennamen im FabricDataFrame zu Power BI-Dimensionen auf. Die Operation ignoriert alle Spaltennamen, die innerhalb des angegebenen Semantikmodells nicht aufgelöst werden können. Weitere Informationen finden Sie unter dem unterstützten DAX-Syntax.
  2. Definiert die Spalten group by mithilfe der aufgelösten Spaltennamen.
  3. Berechnet ein oder mehrere Measures auf der Ebene group by.
  4. Filtert das Ergebnis nach den vorhandenen Zeilen im FabricDataFrame.