Partager via


Lire à partir de modèles sémantiques et écrire des données consommables par Power BI à l’aide de Spark

Dans cet article, vous apprendrez à lire les données et les métadonnées et à évaluer les mesures dans les modèles sémantiques à l’aide du connecteur natif Spark de liaison sémantique dans Microsoft Fabric. Vous allez également apprendre à écrire des données que les modèles sémantiques peuvent consommer.

Prérequis

  • Accédez à l'expérience Data Science dans Microsoft Fabric.

    • Dans le volet gauche, sélectionnez Charges de travail.
    • Sélectionnez Data Science.
  • Créez un notebook pour copier/coller du code dans des cellules.

  • 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. Si vous utilisez Spark 3.3 ou ci-dessous, ou si vous souhaitez effectuer une mise à jour vers la version la plus récente du lien sémantique, vous pouvez exécuter la commande :

    python %pip install -U semantic-link

  • Ajoutez un Lakehouse à votre notebook.

  • Téléchargez le modèle sémantique Customer Profitability Sample.pbix à partir du dossier des jeux de données du référentiel fabric-samples, et enregistrez le modèle sémantique localement.

Charger le modèle sémantique dans votre espace de travail

Dans cet article, nous utilisons le modèle sémantique Customer Profitability Sample.pbix. Ce modèle sémantique fait référence à une entreprise qui fabrique des supports marketing et contient des données sur les produits, les clients et les revenus correspondants pour différentes unités commerciales.

  1. Dans le volet gauche, sélectionnez Espaces de travail, puis sélectionnez le nom de votre espace de travail pour l’ouvrir.
  2. Sélectionnez Importer>Rapport ou Rapport Paginé>à partir de cet ordinateur et sélectionnez le modèle sémantique Customer Profitability Sample.pbix.

Capture d’écran montrant l’interface permettant de télécharger un modèle sémantique dans l’espace de travail.

Une fois le chargement effectué, votre espace de travail comporte trois nouveaux artefacts : un rapport Power BI, un tableau de bord et un modèle sémantique intitulé Customer Profitability Sample. Vous utiliserez ce modèle sémantique pour les étapes décrites dans cet article.

Capture d’écran montrant les éléments du fichier Power BI chargé dans l’espace de travail.

Lire et écrire des données à l’aide de Spark en Python, R, SQL et Scala

L’espace de travail utilisé pour accéder aux modèles sémantiques est par défaut :

  • l’espace de travail du Lakehouse attaché ou
  • l’espace de travail du notebook, si aucun Lakehouse n’est attaché.

Microsoft Fabric expose toutes les tables de tous les modèles sémantiques dans l’espace de travail en tant que tables Spark. Toutes les commandes Spark SQL peuvent être exécutées en Python, R et Scala. Le connecteur natif Spark de Semantic Link prend en charge le pushdown des prédicats Spark vers le moteur Power BI.

Conseil

Comme les tables et les mesures Power BI sont exposées comme des tables Spark normales, elles peuvent être jointes à d’autres sources de données Spark dans une seule requête.

  1. Répertoriez des tables de tous les modèles sémantiques dans l’espace de travail, en utilisant PySpark.

    df = spark.sql("SHOW TABLES FROM pbi")
    display(df)
    
  2. Récupérez les données de la table Customer dans le modèle sémantique Customer Profitability Sample, à l’aide de SparkR.

    Remarque

    L’extraction des tables est soumise à des limitations strictes (voir Lire les limitations) et les résultats peuvent être incomplets. Utilisez le pushdown d’agrégation pour réduire la quantité de données transférées. Les agrégats pris en charge sont les suivants : COUNT, SUM, AVG, MIN et MAX.

    %%sparkr
    
    df = sql("SELECT * FROM pbi.`Customer Profitability Sample`.Customer")
    display(df)
    
  3. Les mesures Power BI sont disponibles par le biais de la table virtuelle _Metrics. La requête suivante calcule le total des revenus et le budget du revenu par région et par secteur d’activité.

    %%sql
    
    SELECT
        `Customer[Country/Region]`,
        `Industry[Industry]`,
        AVG(`Total Revenue`),
        AVG(`Revenue Budget`)
    FROM
        pbi.`Customer Profitability Sample`.`_Metrics`
    WHERE
        `Customer[State]` in ('CA', 'WA')
    GROUP BY
        `Customer[Country/Region]`,
        `Industry[Industry]`
    
  4. Inspectez les mesures et dimensions disponibles à l’aide du schéma Spark.

    spark.table("pbi.`Customer Profitability Sample`._Metrics").printSchema()
    
  5. Enregistrez les données en tant que table delta dans votre Lakehouse.

    delta_table_path = "<your delta table path>" #fill in your delta table path 
    df.write.format("delta").mode("overwrite").save(delta_table_path)
    

Limitations de l’accès à la lecture

Les API d’accès à la lecture présentent les limitations suivantes :

  • Les requêtes en cours d'exécution plus de 10 secondes dans le service Analysis ne sont pas prises en charge (Indication dans Spark : « java.net.SocketTimeoutException : Échec de la communication du service PowerBI »)
  • L’accès aux tables de Power BI à l’aide de Spark SQL est soumis à limitations du back-end de Power BI.
  • Le transfert de prédicat pour les requêtes Spark _Metrics est limité à une seule expression IN et nécessite au moins deux éléments. Les expressions IN supplémentaires et les prédicats non pris en charge sont évalués dans Spark après le transfert de données.
  • Le pushdown de prédicat pour les tables de Power BI accessibles à l’aide de Spark SQL ne prend pas en charge les expressions suivantes :
  • La session Spark doit être redémarrée pour rendre les nouveaux modèles sémantiques accessibles dans Spark SQL.