Partager via


Extraire et calculer des mesures Power BI à partir d’un notebook Jupyter

Ce tutoriel montre comment utiliser SemPy (préversion) pour calculer des mesures dans des modèles sémantiques Power BI.

Dans ce tutoriel, vous allez apprendre à :

  • Évaluer les mesures Power BI par programmation à l’aide de l’interface Python de la bibliothèque de liens sémantiques (SemPy)
  • Découvrez les composants SemPy qui aident à ponter l’IA et la BI :
    • FabricDataFrame : structure de type pandas améliorée avec des informations sémantiques
    • Fonctions qui obtiennent des modèles sémantiques, notamment des données brutes, des configurations et des mesures

Prérequis

  • Dans le volet de navigation, sélectionnez Espaces de travail, puis sélectionnez votre espace de travail pour le définir comme espace de travail actuel.

  • Téléchargez le modèle sémantique PBIX.pbix de l’exemple Analyse de la vente au détail et chargez-le dans votre espace de travail.

Suivre le notebook

Le notebook powerbi_measures_tutorial.ipynb vient avec ce tutoriel.

Configurer le notebook

Dans cette section, vous configurez un environnement de notebook.

  1. Installez SemPy à partir de PyPI à l’aide %pip de l’inline dans le notebook.

    %pip install semantic-link-sempy
    
  2. Importez les modules que vous utiliserez ultérieurement.

    import sempy.fabric as fabric
    
  3. Connectez-vous à l’espace de travail Power BI et répertoriez les modèles sémantiques dans l’espace de travail.

    fabric.list_datasets()
    
  4. Charger le modèle sémantique. Dans ce tutoriel, vous utilisez l’exemple sémantique Analyse de la vente au détail.

    dataset = "Retail Analysis Sample"
    
    dataset = "Retail Analysis Sample PBIX"
    

Lister les mesures d’espace de travail

Utilisez SemPy list_measures pour répertorier les mesures dans un modèle sémantique :

fabric.list_measures(dataset)

Évaluer les mesures

Utilisez la fonction semPy evaluate_measure pour évaluer les mesures de différentes façons.

Évaluer une mesure brute

Utilisez la fonction SemPy evaluate_measure pour calculer la mesure préconfigurée nommée « Taille moyenne de la zone de vente ».

fabric.evaluate_measure(dataset, measure="Average Selling Area Size")

Évaluer une mesure avec groupby_columns

Regroupez le résultat par colonnes à l’aide du groupby_columns paramètre :

fabric.evaluate_measure(dataset, measure="Average Selling Area Size", groupby_columns=["Store[Chain]", "Store[DistrictName]"])

Ce code regroupe par Store[Chain] et Store[DistrictName].

Évaluer une mesure avec des filtres

Utilisez le paramètre pour limiter les filters résultats à des valeurs de colonne spécifiques :

fabric.evaluate_measure(dataset, \
                        measure="Total Units Last Year", \
                        groupby_columns=["Store[Territory]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]})

Dans cet exemple, Store est la table, Territory est la colonne et PA est une valeur autorisée.

Évaluer une mesure sur plusieurs tables

Regrouper par colonnes sur plusieurs tables du modèle sémantique.

fabric.evaluate_measure(dataset, measure="Total Units Last Year", groupby_columns=["Store[Territory]", "Sales[ItemID]"])

Évaluer plusieurs mesures

La evaluate_measure fonction vous permet de fournir plusieurs identificateurs de mesure et de retourner les valeurs calculées dans un seul DataFrame:

fabric.evaluate_measure(dataset, measure=["Average Selling Area Size", "Total Stores"], groupby_columns=["Store[Chain]", "Store[DistrictName]"])

Utiliser le connecteur XMLA Power BI

Le client de modèle sémantique par défaut utilise les API REST Power BI. Si les requêtes échouent avec ce client, basculez vers le point de terminaison Power BI XMLA en définissant use_xmla=True. Les paramètres SemPy sont identiques pour les calculs de mesure avec XMLA.

fabric.evaluate_measure(dataset, \
                        measure=["Average Selling Area Size", "Total Stores"], \
                        groupby_columns=["Store[Chain]", "Store[DistrictName]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]}, \
                        use_xmla=True)

Consultez d’autres tutoriels sémantiques et SemPy :