Partager via


Connectivité Power BI avec lien sémantique

La connectivité Power BI est au cœur du lien sémantique dans Microsoft Fabric. Cet article décrit les manières dont le lien sémantique fournit une connectivité aux modèles sémantiques pour les utilisateurs des écosystèmes Python pandas et Apache Spark.

Un modèle sémantique représente généralement la référence en matière de données qui est le résultat du traitement et de l’affinement de données en amont. Les analystes métier :

  • encoder les connaissances du domaine et la logique métier dans les mesures Power BI ;
  • créer des rapports Power BI à l’aide des modèles sémantiques ;
  • utiliser ces rapports pour prendre des décisions métier.

Lorsque les scientifiques des données travaillant avec les mêmes modèles sémantiques tentent de dupliquer la logique métier dans différents environnements de code ou langages, des erreurs critiques peuvent se produire. Le lien sémantique relie l’écart entre les modèles sémantiques et les Science des données Synapse dans l’expérience Microsoft Fabric afin de fournir un moyen aux analystes métier et aux scientifiques des données de collaborer en toute transparence et de réduire l’incompatibilité des données.

Le lien sémantique offre une connectivité vers :

  • l’écosystème pandas Python par le biais de la bibliothèque Python SemPy.
  • Les modèles sémantiques par le biais du connecteur natif Spark prenant en charge PySpark, Spark SQL, R et Scala.

Connectivité des données via la bibliothèque Python SemPy pour les utilisateurs Pandas

La bibliothèque SemPy Python fait partie de la fonctionnalité de lien sémantique et sert les utilisateurs pandas. Les fonctionnalités de SemPy incluent l’extraction de données à partir de tables, le calcul des mesures et l’exécution des requêtes Data Analysis Expressions (DAX) et des métadonnées.

  • Pour Spark 3.4 et versions ultérieures, le lien sémantique est disponible dans le runtime par défaut lors de l’utilisation de Fabric et il n’est pas nécessaire de l’installer.

  • Pour Spark 3.3 et versions antérieures, ou pour effectuer une mise à jour vers la dernière version du lien sémantique, exécutez la commande suivante :

    %pip install -U semantic-link
    

SemPy étend également les DataFrames Pandas avec des métadonnées supplémentaires propagées à partir de la source de données Power BI. Ces métadonnées incluent :

  • Les catégories de données Power BI suivantes :
    • Géographique : adresse, lieu, ville
    • URL : URL web, URL de l’image
    • Code-barres
  • Des relations entre tables
  • Hierarchies

Le connecteur natif Spark de lien sémantique permet aux utilisateurs Spark d’accéder aux tables et mesures Power BI. Le connecteur est indépendant du langage et prend en charge PySpark, Spark SQL, R et Scala.

Pour utiliser le connecteur natif Spark, vous représentez les modèles sémantiques en tant qu’espaces de noms Spark et exposent de manière transparente les tables Power BI en tant que tables Spark.

La commande suivante configure Spark pour utiliser le connecteur natif Power BI Spark pour 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")

La commande suivante répertorie toutes les tables d’un modèle sémantique appelé Sales Dataset :

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

La commande suivante affiche les données de la table Customer dans le modèle sémantique Sales Dataset :

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

Les mesures Power BI sont accessibles via la table _Metrics virtuelle pour relier Spark SQL relationnel avec Power BI multidimensionnel. Dans l’exemple suivant, Total Revenue et Revenue Budget sont des mesures définies dans le modèle sémantique Sales Dataset, tandis que les autres colonnes sont des dimensions. Les fonctions d’agrégation comme celles-ci AVG sont ignorées pour les mesures et sont présentes uniquement pour assurer la cohérence avec SQL.

Le connecteur prend en charge l’abaissement de prédicat du calcul tel que Customer[State] in ('CA', 'WA') à partir des expressions Spark dans le moteur Power BI afin de permettre l’utilisation du moteur optimisé Power BI.

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

Augmentation des données avec les mesures Power BI

L’opération add_measure est une fonctionnalité puissante de lien sémantique qui vous permet d’augmenter les données avec des mesures provenant de modèles sémantiques. Cette opération est disponible uniquement dans la bibliothèque Python SemPy et n’est pas prise en charge dans le connecteur natif Spark. Pour plus d'informations sur la méthode add_measure, voir add_measure dans la documentation sur la classe FabricDataFrame.

Pour utiliser la bibliothèque Python SemPy, installez-la dans votre noyau de notebook en exécutant le code suivant dans une cellule de notebook :

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

L’exemple de code suivant suppose que vous avez un FabricDataFrame existant avec des données que vous souhaitez augmenter à l’aide de mesures provenant d’un modèle sémantique.

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

La méthode add_measure effectue les étapes suivantes :

  1. Résout les noms de colonnes dans FabricDataFrame en dimensions Power BI. L’opération ignore les noms de colonnes qui ne peuvent pas être résolus dans le modèle sémantique donné. Pour plus d’informations, consultez la syntaxe DAX prise en charge.
  2. Définit les colonnes group by à l’aide des noms de colonnes résolus.
  3. Calcule une ou plusieurs mesures au niveau group by.
  4. Filtrage du résultat par les lignes existantes dans FabricDataFrame.