Delen via


Power BI-connectiviteit met semantische koppeling

Power BI-connectiviteit vormt de kern van een semantische koppeling in Microsoft Fabric. In dit artikel worden de manieren beschreven waarop semantische koppelingen connectiviteit bieden met semantische modellen voor gebruikers van de Python Pandas- en Apache Spark-ecosystemen.

Een semantisch model vertegenwoordigt meestal een hoge gegevensstandaard die het resultaat is van upstream-gegevensverwerking en verfijning. Bedrijfsanalisten kunnen:

  • Codeer domeinkennis en bedrijfslogica in Power BI-metingen.
  • Power BI-rapporten maken met behulp van semantische modellen.
  • Gebruik deze rapporten om zakelijke beslissingen te nemen.

Wanneer gegevenswetenschappers met dezelfde semantische modellen proberen bedrijfslogica te dupliceren in verschillende codeomgevingen of talen, kunnen kritieke fouten leiden. Semantische koppeling overbrugt de kloof tussen semantische modellen en de Synapse-Datawetenschap in Microsoft Fabric om een manier te bieden voor bedrijfsanalisten en gegevenswetenschappers om naadloos samen te werken en gegevens die niet overeenkomen te verminderen.

Semantische koppeling biedt connectiviteit met:

  • Het Python Pandas-ecosysteem via de SemPy Python-bibliotheek.
  • Semantische modellen via de systeemeigen Spark-connector die ondersteuning biedt voor PySpark, Spark SQL, R en Scala.

Gegevensconnectiviteit via SemPy Python-bibliotheek voor pandas-gebruikers

De SemPy Python-bibliotheek maakt deel uit van de semantische koppelingsfunctie en biedt pandas-gebruikers. SemPy-functionaliteit omvat het ophalen van gegevens uit tabellen, het berekenen van metingen en het uitvoeren van DAX-query's (Data Analysis Expressions ) en metagegevens.

  • Voor Spark 3.4 en hoger is semantische koppeling beschikbaar in de standaardruntime wanneer u Fabric gebruikt en hoeft u deze niet te installeren.

  • Voor Spark 3.3 of lager, of als u wilt bijwerken naar de nieuwste versie van de semantische koppeling, voert u de volgende opdracht uit:

    %pip install -U semantic-link
    

SemPy breidt ook pandas DataFrames uit met toegevoegde metagegevens die zijn doorgegeven vanuit de Power BI-gegevensbron. Deze metagegevens omvatten:

  • Power BI-gegevenscategorieën:
    • Geografisch: Adres, plaats, stad
    • URL: Web-URL, afbeeldings-URL
    • Barcode
  • Relaties tussen tabellen
  • Hiërarchieën

Met de semantische koppeling van de systeemeigen Spark-connector hebben Spark-gebruikers toegang tot Power BI-tabellen en -metingen. De connector is taalneutraal en ondersteunt PySpark, Spark SQL, R en Scala.

Als u de systeemeigen Spark-connector wilt gebruiken, vertegenwoordigt u semantische modellen als Spark-naamruimten en maakt u Power BI-tabellen transparant beschikbaar als Spark-tabellen.

Met de volgende opdracht configureert u Spark voor het gebruik van de systeemeigen Power BI Spark-connector voor 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")

De volgende opdracht bevat alle tabellen in een semantisch model met de naam Sales Dataset:

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

Met de volgende opdracht worden gegevens uit de Customer tabel in het semantische model Sales Datasetweergegeven:

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

Power BI-metingen zijn toegankelijk via de virtuele _Metrics tabel om relationele Spark SQL te overbrugmen met multidimensionale Power BI. In het volgende voorbeeld Total Revenue Revenue Budget worden metingen gedefinieerd in het Sales Dataset semantische model en zijn de andere kolommen dimensies. Aggregatiefuncties zoals AVG worden genegeerd voor metingen en zijn alleen aanwezig om consistentie met SQL te bieden.

De connector ondersteunt predicaatpush van berekeningen zoals Customer[State] in ('CA', 'WA') spark-expressies naar de Power BI-engine om het gebruik van de geoptimaliseerde Power BI-engine mogelijk te maken.

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

Gegevensvergroting met Power BI-metingen

De add_measure bewerking is een krachtige functie van semantische koppeling waarmee u gegevens kunt uitbreiden met metingen van semantische modellen. Deze bewerking is alleen beschikbaar in de SemPy Python-bibliotheek en wordt niet ondersteund in de systeemeigen Spark-connector. Zie add_measure in de klassedocumentatie voor meer informatie over de add_measure FabricDataFrame methode.

Als u de SemPy Python-bibliotheek wilt gebruiken, installeert u deze in uw notebook-kernel door de volgende code uit te voeren in een notebookcel:

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

In het volgende codevoorbeeld wordt ervan uitgegaan dat u een bestaand FabricDataFrame hebt met gegevens die u wilt uitbreiden met metingen uit een semantisch 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")

De add_measure methode voert de volgende stappen uit:

  1. Hiermee worden kolomnamen in het FabricDataFrame omgezet in Power BI-dimensies. De bewerking negeert kolomnamen die niet kunnen worden omgezet binnen het opgegeven semantische model. Zie de ondersteunde DAX-syntaxis voor meer informatie.
  2. Definieert group by kolommen met behulp van de opgeloste kolomnamen.
  3. Berekent een of meer metingen op het group by niveau.
  4. Hiermee filtert u het resultaat op de bestaande rijen in het FabricDataFrame.