Azure Data Factory : Actualiser un modèle Azure Analysis Services et Power BI sans code grâce au MSI !!
Aujourd’hui, nous allons voir comment demander à un modèle Power BI déployé dans le service ou dans Azure Analysis Services (AAS) de se mettre à jour directement via Azure Data Factory (ADF).
Dans les deux cas (Power BI ou AAS) nous allons utiliser le MSI (Managed Service Identity) de ADF qui va surtout permettre à ADF de réaliser directement des actions via les API des services Power BI ou AAS sans passer par un outil tiers comme Azure Automation, Azure Function ou Azure Logic App. Le MSI est un mode d’identification d’Azure qui va donner à votre ressource ADF un identité propre dans l’Azure Active Directory. Nous l’avions d’ailleurs déjà utilisé dans mon article ici dans lequel la ressource ADF se connectait directement à Azure Key Vault pour récupérer la valeur d’un secret.
Plus d’info sur le MSI : https://docs.microsoft.com/fr-fr/azure/active-directory/managed-identities-azure-resources/overview
Pour récupérer les informations d’identité de la ressource ADF, vous pouvez notamment passer par le portail Azure dans les paramètres de la ressource ADF :
Ou dans l’AAD en recherchant le nom de votre ADF dans la rubrique entreprise application :
Power BI
Bien sûr, il est possible de mettre en place une planification automatique dans Power BI pour qu’un modèle se mette-à-jour à une fréquence définie (tous les jours à 9h, 2 fois par jour le lundi, mardi…)… Le problème c’est que cela n’est pas synchronisé avec les traitements de chargement de données en amont. Et si par exemple ces traitements de chargement se terminent un jour à 9h10 au lieu de 8h, le Power BI se mettra à jour avec des données incohérentes !
On va donc utiliser cette méthode pour ordonnancer les traitements et être sûr que notre dataset Power BI sera mis à jour après les chargements de données sources.
Pour donner les droits à ADF de rafraichir le dataset Power BI, il va falloir activer la fonctionnalité “Autoriser les principaux de services à utiliser les API Power BI” dans le portail d’administration Power BI : cf. étape 3 –> https://docs.microsoft.com/fr-fr/power-bi/developer/embedded/embed-service-principal#step-3—enable-the-power-bi-service-admin-settings.
Je recommande d’activer cette fonctionnalité que pour un groupe AAD spécifique et de mettre les administrateurs techniques et les identités des ADF dedans, cela évitera aux utilisateurs lambda de faire des bêtises !
Une fois que c’est fait, toutes les identités de l’AAD seront visibles dans Power BI et il faut alors ajouter l’ADF en administrateur du workspace contenant le dataset :
Maintenant dans ADF vous allez pouvoir créer un activité Web avec pour paramètres :
- URL : l’url de votre dataset https://api.powerbi.com/v1.0/myorg/groups/<groupid>/datasets/<datasetid>/refreshes
en remplaçant <groupid> par l‘id du workspace et <datasetid> par
l’id du dataset. Pour les retrouver vous pouvez vous rendre sur les paramètres du dataset dans le portail Power BI et les récupérer dans l’url : https://app.powerbi.com/groups/<groupid>/settings/datasets/<datasetid>
- Method : POST
- Body : { « notifyOption »: « NoNotification » }
- Authentication : MSI
- Resource : https://analysis.windows.net/powerbi/api
Plus d’info sur l’API de refresh de dataset Power BI ici : https://docs.microsoft.com/en-us/rest/api/power-bi/datasets/refreshdatasetingroup
Azure Analysis Services
Pour AAS c’est un peu le même principe, il faut d’abord autoriser l’ADF à mettre à jour un modèle de l’instance AAS. Pour cela, nous allons nous connecter à l’instance AAS via SQL Server Management Studio avec un compte administrateur, faire un clic droit sur l’instance et cliquer sur “Propriétés”
Dans l’onglet “Sécurité” cliquer sur “Ajouter…”, dans “Entrée manuelle” entrer app:<applicationID>@<tenantID> en remplaçant l’application id et le tenant id de l’ADF (voir plus haut pour savoir comment récupérer ces 2 informations) puis cliquer sur “Ajouter” et enfin “OK”
Reste ensuite à créer une activité Web dans un pipeline avec pour paramètres :
- URL : l’url de votre modèle AAS https://<region>.asazure.windows.net/servers/<servername>/models/<modelname>/refreshes en remplaçant <servername> par le nom du serveur AAS, <region> par la région de l’instance AAS (westeurope…) et <modelname> par le nom du modèle AAS à mettre à jour. Pour les retrouver vous pouvez vous rendre sur le portail Azure et tout sera visible sur la page de votre ressource AAS.
- Method : POST
- Body : {type : « full », maxParallelism : 10}
- Authentication : MSI
- Resource : https://<region>.asazure.windows.net en remplaçant <region> par la région de votre ressource AAS (westeurope…)
Plus d’info sur l’api de refresh AAS ici : https://docs.microsoft.com/fr-fr/azure/analysis-services/analysis-services-async-refresh
Attention ces méthodes sont asynchrones : on donne l’ordre de lancer des rafraichissements et on attend pas la fin, donc les pipelines ADF s’arrêteront avant la fin des rafraichissements. Nous verrons éventuellement dans un prochain article comment surveiller les statuts des rafraichissements avec ADF … A suivre !
FIN !
Views:
2 685
Reading this article is like taking a masterclass in quality journalism. The author’s ability to present complex issues in a way that is accessible and engaging for readers of all levels is truly impressive, and their commitment to presenting balanced and unbiased perspectives is admirable. What I love most about this article is its ability to tackle sensitive and controversial issues with sensitivity and nuance, providing readers with a deep and thorough understanding of important social and political issues.
I’ve been a fan of this blog for a while now and it never disappoints. The author’s writing is both informative and engaging, and I always come away with new insights and a deeper understanding of the subject matter.