2022-10-11
A l’agence nous avons un fichier Excel stocké sur SharePoint où chacun note ses jours de présence ou de télétravail. J’ai créé un rapport Power BI connecté à ce fichier et qui affiche le nombre de présents pour les prochains jours ainsi que les personnes qui n’ont pas rempli le fichier.
Je voulais que le rapport soit rafraichi après la mise à jour du fichier source afin d’afficher les informations les plus à jour possible.
Le rapport est connecté au fichier sur SharePoint. Je n’utilise pas de paramètre ou de connexion dynamique pour ne pas bloquer le rafraichissement depuis le service.
Je charge aussi une table Info d’une seule ligne avec la date de chargement en UTC et le nom du fichier source.
let
#"Table" = "Planning_présence_site.xlsx",
#"Converti en table1" = #table(1, { {Table} }),
#"Colonnes renommées" = Table.RenameColumns(#"Converti en table1",{ {"Column1", "Nom fichier"} }),
#"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes renommées", "Date traitement", each DateTimeZone.UtcNow()),
#"Type modifié" = Table.TransformColumnTypes(#"Personnalisée ajoutée",{ {"Date traitement", type datetime}, {"Nom fichier", type text} })
in
#"Type modifié"
Une fois publié sur app.powerbi.com le rapport peut être rafraichi sans passer par une Gateway. Je planifie un traitement tous les matins entre 6h30 et 7h00.
Le rapport est partagé à toute l’équipe Teams.
L’actualisation dynamique sera faite grâce à Power Automate qui permet d’automatiser des processus entre differents services / outils. L’objectif est d’actualiser le rapport Power BI à chaque mise à jour du fichier Excel dans SharePoint.
Pour faire mon flux je dois anticiper les élements suivants :
J’ai organisé mon flux ainsi :
Le flux commence si n’importe quel fichier du répertoire SharePoint est modifié. A cette étape, il n’est pas possible de filtrer sur un fichier précis. Il serait possible de faire un test du fichier immédiatement après le déclencheur, mais on le fera plus tard.
On attend 5 minutes avant de continuer le flux. Cela permet de faire plusieurs modifications sur le fichier sans lancer le traitement immédiatement.
On éxécute une requête DAX sur le modèle de données pour récupérer le nom du fichier et la dernière date de mise à jour. Les deux champs sont dans la table Info. J’utilise l’action Exécuter une requête sur un jeu de données du connecteur Power BI.
Le résultat de la requête est parsé pour pouvoir acceder aux champs.
On va tester le résultat de requête pour verifier que le fichier modifié est bien le fichier source du rapport et que le dernier rafraichissement du jeu de données date de plus de 30 minutes. A cette étape on entre dans une boucle qui parcours toutes les lignes du résultat de requête, ce n’est pas un problème puisque la requête ne renvoi qu’une seule ligne à chaque fois.
Si le test est réussi (fichier correct et dernier traitement il y a plus de 30 minutes), on lance l’actualisation du jeu de données dans Power BI. J’utilise l’action Actualiser un jeu de données du connecteur Power BI.
Quelques pistes d’améliorations :
"error":{
"code":"InvalidRequest"
,"message":"Invalid dataset refresh request. Another refresh request is already executing"
}