Utilisation de l'API REST Power BI pour la Manipulation des Datasets avec Python

article code python datasets jupyter lab pandas power bi powerbi app rest api Aug 02, 2024

L'API REST Power BI est un outil puissant pour interagir avec les ressources de Power BI Service. Elle permet de récupérer, manipuler, et analyser des données de manière automatisée, ce qui est crucial pour les tâches de reporting et d'analyse. Cet article explore l'importance de cette API et montre comment l'utiliser avec Python pour interagir avec les datasets dans Power BI.

Introduction à l'API REST Power BI

L'API REST Power BI fournit des capacités avancées pour gérer les ressources de Power BI, y compris la manipulation des datasets. Grâce à cette API, il est possible d'exécuter des requêtes DAX sur des datasets et d'obtenir des résultats de manière programmatique. Cela facilite l'intégration de Power BI dans des flux de travail automatisés et permet une analyse plus approfondie des données.

Récupération et Manipulation des Données

Tout d'abords nous devons connaitre l'id du dataset et aussi l'id du group dans l'espace powerbiapp

Il faut récupérer ces deux identifiants ainsi : 

On doit maintenant récupérer le Token de connexion en allant sur ce lien 
https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/get-dataset#code-try-0

 Il faut récupérer le token et l'ajouter dans un fichier .env 
N'oublier pas qu'il faut refaire cette étape lorsqu'il y a expiration du token

POWER_BI_TOKEN= <coller le token ici>

 

Le premier script montre comment exécuter des requêtes sur un dataset spécifique via l'API REST Power BI. Voici une explication détaillée des blocs de ce script :

Chargement des Variables d'Environnement

from dotenv import load_dotenv
import os
import requests
import pandas as pd

# Charger les variables d'environnement depuis le fichier .env
load_dotenv()

# Récupérer le token depuis les variables d'environnement
token = os.getenv('POWER_BI_TOKEN')

Ce bloc de code charge les variables d'environnement et récupère le token nécessaire pour l'authentification auprès de l'API Power BI.

# URL de la requête
url = "https://api.powerbi.com/v1.0/myorg/datasets/2a51b4c5-cfd6-4dd4-a2e6-838ef41884eb/executeQueries"

# En-têtes de la requête
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

# Corps de la requête
body = {
    "queries": [
        {
            "query": "EVALUATE VALUES(Calendar)"
        }
    ],
    "serializerSettings": {
        "includeNulls": True
    }
}

Ce bloc définit l'URL de l'API, les en-têtes nécessaires, et le corps de la requête avec la requête DAX pour récupérer les valeurs d'une table Calendar.

Exécution de la Requête et Traitement des Résultats

 

# Faire la requête POST
response = requests.post(url, headers=headers, json=body)

# Vérifier la réponse
if response.status_code == 200:
    data = response.json()
    # Vérifier la structure de la réponse
    if 'results' in data and len(data['results']) > 0:
        df = pd.DataFrame(data['results'][0]['tables'][0]['rows'])
        print("DataFrame créé avec succès")
    else:
        print("Structure de la réponse inattendue")
else:
    print(f"Échec de la requête : {response.status_code}")
    print(response.text)

Ce bloc envoie la requête POST, traite la réponse, et convertit les données en DataFrame Pandas pour une analyse ultérieure.

Interaction Dynamique avec les Datasets via ipywidgets

Le second script améliore l'interaction en permettant à l'utilisateur de sélectionner dynamiquement les tables à partir desquelles les données seront récupérées. Voici une explication détaillée du script :

Fonction pour Charger les Données

 

Tables = ['Calendar', 'Customers', 'Product', 'Purchases', 'Sales']

def load_data(table):
    load_dotenv()

    # Récupérer le token depuis les variables d'environnement
    token = os.getenv('POWER_BI_TOKEN')
    
    # URL de la requête
    url = "https://api.powerbi.com/v1.0/myorg/datasets/2a51b4c5-cfd6-4dd4-a2e6-838ef41884eb/executeQueries"
    
    # En-têtes de la requête
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    
    # Corps de la requête
    body = {
        "queries": [
            {
                "query": f"EVALUATE VALUES({table})"
            }
        ],
        "serializerSettings": {
            "includeNulls": True
        }
    }
    
    # Faire la requête POST
    response = requests.post(url, headers=headers, json=body)
    
    # Vérifier la réponse
    if response.status_code == 200:
        data = response.json()
        if 'results' in data and len(data['results']) > 0:
            df = pd.DataFrame(data['results'][0]['tables'][0]['rows'])
            print(f"DataFrame chargé avec succès , shape = {df.shape}")
            return df.head()
        else:
            print("Structure de la réponse inattendue")
    else:
        print(f"Échec de la requête : {response.status_code}")
        print(response.text)

 

Cette fonction load_data récupère les données pour une table spécifiée en utilisant l'API Power BI. Le corps de la requête est construit dynamiquement en fonction du nom de la table fourni.

Interaction avec ipywidgets

from ipywidgets import interact
interact(load_data, table=Tables);

 

Le widget interact permet aux utilisateurs de sélectionner une table depuis une liste déroulante. Lorsqu'une table est sélectionnée, la fonction load_data est appelée pour récupérer et afficher les données de la table choisie. Cela permet une exploration interactive et pratique des données disponibles dans le dataset.

 

Conclusion

L'utilisation de l'API REST Power BI avec Python vous permet de gérer efficacement les datasets et d'automatiser les tâches liées aux données. En combinant cette API avec des outils comme ipywidgets, vous pouvez créer des interfaces interactives pour explorer et analyser les données de manière plus engageante. Les scripts fournis illustrent comment récupérer des données et offrir des fonctionnalités interactives pour une exploration dynamique des datasets.

Ne ratez pas nos prochains contenus

Inscrivez vous à notre Newsletter pour recevoir tous nos prochains contenus gratuits : Articles, Webinaires, Podcasts, Astuces vidéos,...

Data AI Lab

Transformez votre quotidien avec des compétences clés en data. Des formations, conseils et défis pour une maîtrise pointue en Data Science et IA.

 

Liens

Accueil
Challenges Data
Consulting

 

Formations

Parcours Data Analyst
Parcours Data Engineer
Voir toutes les formations

 

Ressources

Articles
Webinaires
Tuto vidéos

 

All rights reserved 2024 - Mentions légales - Politique de confidentialité

Â