Power BI-forbindelse med semantisk forbindelse

Power BI-forbindelse er kernen i semantisk forbindelse i Microsoft Fabric. Denne artikel beskriver de måder, hvorpå semantisk link giver forbindelse til semantiske modeller for brugere af Python pandas- og Apache Spark-økosystemerne.

En semantisk model repræsenterer normalt en høj datastandard, der er resultatet af upstream-databehandling og -afgrænsning. Forretningsanalytikere kan:

  • Indkod domæneviden og forretningslogik i Power BI-mål.
  • Opret Power BI-rapporter ved at bruge semantiske modeller.
  • Brug disse rapporter til at styre forretningsbeslutninger.

Når datateknikere, der arbejder med de samme semantiske modeller, forsøger at duplikere forretningslogik i forskellige kodemiljøer eller sprog, kan kritiske fejl medføre. Semantisk forbindelse bygger bro mellem semantiske modeller og Data Science in Microsoft Fabric-oplevelsen for at give forretningsanalytikere og dataforskere mulighed for at samarbejde problemfrit og reducere datamismatch.

Semantisk link giver mulighed for at oprette forbindelse til:

  • Python pandas-økosystemet via biblioteket SemPy Python.
  • Semantiske modeller via den oprindelige Spark-connector , der understøtter PySpark, Spark SQL, R og Scala.

Dataforbindelse gennem SemPy Python-biblioteket for pandas-brugere

SemPy Python-biblioteket er en del af semantic link-funktionen og betjener pandas-brugere. SemPy-funktionalitet omfatter datahentning fra tabeller, beregning af målinger og udførelse af DAX-forespørgsler (Data Analysis Expressions) og metadata.

  • For Fabric Runtime 1.2 (Spark 3.4) og derover er semantic link tilgængeligt i standardruntime, og der er ikke behov for at installere det.

  • For at opdatere til den nyeste version af Semantic Link, kør følgende kommando:

    %pip install -U semantic-link
    

SemPy udvider også pandas DataFrames med tilføjet metadata, der udbredes fra Power BI-datakilden. Disse metadata omfatter:

  • Power BI-datakategorier:
    • Geografisk: Adresse, sted, by
    • URL-adresse: URL-adresse til websted, URL-adresse til billede
    • Stregkode
  • Relationer mellem tabeller
  • Hierarkier

Vigtigt!

Den oprindelige Spark-connector til Semantic Link er i udfasningstilstand fra oktober 2025 og vil blive udfaset fuldt ud i oktober 2028. Ingen større versioner af Spark native connector vil blive udgivet efter 1. oktober 2025. Connectoren er kun kompatibel med Spark runtime-versioner op til 3.5 og understøtter ikke Spark runtime version 4.0 eller nyere. For at sikre fortsat support og adgang til nye funktioner skal du migrere til Semantic Link Python SDK.

Den semantiske link Spark native connector giver Spark-brugere adgang til Power BI-tabeller og mål. Connectoren er sprogagnostisk og understøtter PySpark, Spark SQL, R og Scala.

For at bruge Sparks native connector repræsenterer du semantiske modeller som Spark-navnerum og eksponerer Power BI-tabeller transparent som Spark-tabeller.

Følgende kommando konfigurerer Spark til at bruge Power BI Spark native connector til Spark SQL:

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")

Følgende kommando viser alle tabeller i en semantisk model med navnet Sales Dataset:

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

Følgende kommando viser data fra tabellen Customer i den semantiske model Sales Dataset:

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

Power BI målinger er tilgængelige via den virtuelle _Metrics-tabel for at bygge bro mellem relationel Spark SQL og multidimensionel Power BI. I følgende eksempel er og Total Revenue målinger defineret Revenue Budget i den Sales Dataset semantiske model, og de andre kolonner er dimensioner. Sammenlægningsfunktioner som AVG ignoreres for målinger og findes kun for at sikre overensstemmelse med SQL.

Connectoren understøtter prædikat-nedadtryk af beregninger som Customer[State] in ('CA', 'WA') fra Spark-udtryk ind i Power BI-motoren for at muliggøre brug af den Power BI optimerede motor.

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]`

Dataforstærkning med Power BI-målinger

Handlingen add_measure er en effektiv funktion i semantisk link, der giver dig mulighed for at øge data med målinger fra semantiske modeller. Denne operation er kun tilgængelig i SemPy Python-biblioteket og understøttes ikke i Spark native connector. Du kan få flere oplysninger om metoden i add_measure add_measure i dokumentationen til FabricDataFrame klassen.

For at bruge SemPy Python-biblioteket skal du installere det i din notebook-kerne ved at køre følgende kode i en notebook-celle:

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

I følgende kodeeksempel antages det, at du har en eksisterende FabricDataFrame med data, som du vil forstærke med målinger fra en semantisk model.

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")

Metoden add_measure udfører følgende trin:

  1. Løser kolonnenavne i FabricDataFrame til Power BI-dimensioner. Handlingen ignorerer alle kolonnenavne, der ikke kan fortolkes i den angivne semantiske model. Du kan få flere oplysninger i den understøttede DAX-syntaks.
  2. Definerer group by kolonner ved hjælp af de fortolkede kolonnenavne.
  3. Beregner en eller flere målinger på group by niveauet.
  4. Filtrerer resultatet efter de eksisterende rækker i FabricDataFrame.