Accueil » Rafraichir un dataset Power BI depuis Azure Synapse Analytics

Rafraichir un dataset Power BI depuis Azure Synapse Analytics

Rafraichir un dataset Power BI depuis Azure Synapse Analytics

Une fois de plus, notre DataLakeHouse n’a d’utilité que si l’on exploite les données qui y sont stockées. Un des uses cases le plus classique est de faire du reporting (via Power BI)sur la partie « DataXxxHouse ».
Nous allons présenter dans cet article comment mettre à jour notre Dataset Power BI directement depuis Azure Synapse Analytics via un pipeline.

Introduction

La dernière zone de notre DataLakeHouse correspond à notre DataWareHouse et nous avons construit un dataset Power BI à partir de celui-ci. Pour des questions de performances cotées utilisateur, notre dataset est configuré en mode « import » et nous devons donc rafraichir régulièrement celui-ci afin d’avoir les dernières données dans nos rapports Power BI.

Du côté de Synapse analytics, nous programmons nos alimentations via des triggers qui sont déclenchés sur certains intervalles de temps. Nous avons exactement le même type de configuration coté Power BI.

Le problème de ce fonctionnement est que si nous savons approximativement à quel moment démarre l’alimentation de notre DataLakeHouse, nous ne savons pas quand il est fini et donc à quel moment il nous faut lancer le rafraichissement côté Power BI. Il est certes envisageable de faire des estimations en prenant la moyenne des temps de traitements, de rajouter une petite marge et de programmer les différents triggers en conséquence.

Cependant, il y a une façon de voir la chose de manière bien plus évidente !

Cas d’usage – Rafraichir notre Dataset Power BI depuis notre pipeline Synapse

Imaginons que nous avons des pipelines Synapses qui sont déclenchées via des triggers depuis Synapse qui extraient les données de nos bases de données opérationnelles, les traitent pour alimenter la couche DataWareHouse de notre DataLakeHouse. Nous souhaitons que les différents Datasets Power BI basé sur ce DWH soit rafraichi dès que les données soient mises à jour et uniquement si tous les traitements ce bon bien passé.

Nous voulons (et allons) donc lancer le rafraichissement de nos Dataset directement depuis Synapse à la fin de nos pipelines de traitement.

Solution

La solution consiste en un pipeline qui sera exécuté à la suite de nos pipelines de traitement qui fera un appel à l’API Power BI directement après le succès de pipeline de traitement.

Schéma global de la solution

Mise en place des autorisations

La première partie de notre solution consiste à autoriser le user qui exécute le pipeline synapse à utiliser l’api Power BI. Pour ce faire, nous allons d’abord créer un groupe de sécurité ou nous allons ajouter nos utilisateurs synapses.

Ce qu’il se passe dans la majorité des cas, c’est que nous allons demander à nos administrateurs AD / sécurité de créer le groupe pour nous, car généralement nous n’avons pas tous les droits. Cependant, voici la démarche à effectuer.

Création du groupe dans l’AAD

Rendez-vous dans le centre d’administration AAD.

Création d’un groupe
Choisir le type de groupe « Sécurité »

Pour faciliter son identification, il faut choisir un nom « parlant », Pour ma part, il s’appellera « PowerBI_Integration ».

Notre groupe crée avec le bon type

Il nous faut maintenant ajouter les utilisateurs à ce groupe. Mais quelles users ? Lorsque l’on exécute un pipeline via un trigger, c’est l’identité managée de Synapse qui exécute un pipeline et c’est donc elle qui doit être autorisée. Vous pouvez aussi ajouter les développeurs synapses dans ce groupe car lorsque l’on exécute un pipeline en mode debug, c’est l’utilisateur authentifié sur le workspace qui exécute l’action. Dans un environnement de développement, il peut être intéressant d’ajouter les développeurs dans ce groupe pour leur donner les mêmes droits. (ou créer un autre groupe et lui donner les mêmes droits dans le reste de la procédure)

L’identité managée en question porte le même nom que le workspace. Au besoin, l’ensemble des informations se trouve dans les propriétés du workspace dans le portail azure.

Informations de notre workspace
Ajout de l’identité managé de notre workspace synapse

Autorisation du groupe dans Power BI

Une fois notre groupe crée, il va nous falloir aller dans le portail d’administration de notre Tenant Power BI pour autoriser les utilisateurs de ce groupe à utiliser les APIs Power BI.

Aller dans le portail d’administration de Power BI

Une fois dans le portail d’administration, nous devons aller autoriser notre groupe à utiliser les API Power BI dans les paramètres de développeur.

Autorisation de notre groupe de user à utiliser les API Power BI

Nous avons maintenant l’ensemble des autorisations nécessaires pour demander le rafraichissement d’un dataset Power BI depuis un pipeline Synapse qu’il nous reste à développer.

Développement du pipeline

Pour être plus précis, ce que nous devons développer est « juste une activité » qui va faire un appel à l’API Power BI. Il nous faut cependant quelques paramètres que nous allons inclure dans le pipeline histoire de rendre le tout un peu paramétrable.

La documentation de l’API est disponible ici : Datasets – Refresh Dataset – REST API (Power BI Power BI REST APIs) | Microsoft Learn.

Mise en place du Pipeline

La première chose à effectuer est de créer notre pipeline dédié qui hébergera notre solution.

Création d’un nouveau Pipeline
Notre nouveau Pipeline

Une fois le pipeline créer, nous allons avoir besoin de créer les paramètres nécessaires à l’appel API. Nous avons besoin de l’ID du dataset ainsi que de l’ID du workspace.

Création des paramètres

Nous pouvons maintenant ajouter notre activité de type web.

Utilisation d’une activité « Web »

La configuration générale est plutôt rapide. Un nom pour faire les choses proprement et une valeur de Timeout relativement faible sont suffisants.

Configuration générale

C’est dans la partie « Settings » que nous allons vraiment faire la configuration de notre appel API. Dans un premier temps, nous devons configurer l’URL de l’appel. Étant donné que nous devons passer les paramètres d’ID de notre Dataset et de notre Workspace Power BI, nous devons ajouter du contenu dynamique.

Configuration de l’URL de l’appel API

C’est dans l’éditeur d’expression que nous allons créer la chaine de caractère correspondant à l’URL de notre appel.

Construction de l’appel

Pour des raisons que je n’ai pas encore élucidé, je n’arrive pas à utiliser l’URL fournie dans la documentation (sans faire appel au Workspace Id) mais la suivante fonctionne correctement. Si vous trouvez l’erreur, je vous serai reconnaissant de m’en informer en commentaire, mais en attendant cela marche correctement, et c’est bien l’essentiel !

@concat('https://api.powerbi.com/v1.0/myorg/groups/',pipeline().parameters.WorkspaceGuid,'/datasets/',pipeline().parameters.DatasetGuid,'/refreshes')

Ensuite, nous devons préciser que notre appel API se fait avec une méthode « POST », car nous envoyons une information à notre API et nous n’attendons rien en retour (appart un code retour).

Configuration de la méthode d’appel API –> POST

La dernière étape consiste à configurer la méthode d’authentification qui doit être utilisée. Nous avons autorisé au début de notre article l’identité managée de notre Workspace Synapse et nous allons donc l’utiliser pour l’authentification.

Configuration de l’authentification

Le deuxième paramètre correspond à l’adresse qui va nous servir à nous authentifier. L’adresse à utiliser est la suivante :

https://analysis.windows.net/powerbi/api

La configuration est finie, il nous reste maintenant à tester notre pipeline. Attention, en debug ou via un trigger le user qui fera l’appel n’est pas le même donc si vous n’avez pas autorisé votre compte AAD mais uniquement l’identité managée il faudra impérativement publié et exécuter via un trigger.

Configuration des id nécessaires de notre Power BI

Trouver les Id Power BI

Pour trouver les Id du Workspace et du Dataset, il suffit de se rendre sur la page du Dataset en question dans Power BI et tout est écrit dans l’URL.

Récupération des Id Power BI

Résultat

Le pipeline est bien exécuté :

ATTENTION ! Ce qui à réussi est uniquement l’appel à l’API et non pas le refresh Power BI en lui-même. Globalement l’API nous répond qu’elle a réussi à lancer le refresh de notre dataset. Ce qu’il se passe après reste dans Power BI.

Pour vérifier que tout se passe bien, nous pouvons aller dans Power BI et regarder l’historique de refresh de notre Datastet. Si tout c’est bien passé, notre Dataset devrait être en cours, mais le plus important est de regarder le type de refresh qui fait apparaitre qu’il a été lancé via API.

Déclenchement d’un refresh Power BI via API

Conclusion

A ce stade, nous avons réussi à lancer le refresh d’un dataset Power BI directement depuis un pipeline Synapse. Cependant, pour l’instant, nous rafraichissons qu’un seul dataset, nous ne vérifions pas s’il y a une erreur dans l’appel.

Certaines améliorations à ce pipeline qui feront probablement l’objet d’articles futurs seraient :

  • Rafraichir uniquement une table ou une partition du dataset
  • Rafraichir plusieurs Dataset
  • Faire une vérification d’erreur

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *