Flux de tâches translytiques
En bref
- Objectifs : expliquer le principe d'un flux de tâches translytique ; créer une fonction de données utilisateur Fabric qui écrit dans une base SQL ; la déclencher depuis un bouton de rapport alimenté par un segment d'entrée ; connaître les limites de déploiement.
- Prérequis : Power BI Desktop, notions de Python et de SQL, page Filtres et segments (partie 4) pour les segments.
- Licence requise : capacité Fabric (une capacité d'essai suffit pour le tutoriel).
Pourquoi ?
Un rapport sert d'habitude à lire des données. Les flux de tâches translytiques (contraction de transactionnel et analytique) permettent d'agir sans quitter le rapport : corriger un statut, ajouter un commentaire sur un client, saisir une remise, appeler une API externe ou envoyer une notification. L'utilisateur reste dans son contexte d'analyse, et la donnée modifiée est visible immédiatement.
Notions clés
Les composants
| Composant | Rôle |
| Fonction de données utilisateur Fabric | Code Python hébergé dans Fabric, sans serveur à gérer ; reçoit des paramètres et agit sur une source (écriture, appel d'API) |
| Base de données SQL Fabric | Source recommandée pour l'écriture différée ; les entrepôts et les fichiers de lakehouse sont aussi pris en charge |
| Segment d'entrée (texte) | Zone de saisie du rapport dont la valeur est passée à la fonction |
| Bouton de fonction de données | Bouton dont l'action, de type Fonction de données, appelle la fonction avec les paramètres mappés |
Scénarios types
- Ajouter un enregistrement (un nouveau client, une note).
- Modifier un enregistrement (un statut, une annotation).
- Supprimer un enregistrement devenu inutile.
- Appeler une API externe (générer une suggestion avec Azure OpenAI, publier un message dans Teams).
- Afficher des notifications dans le rapport, stockées comme données.
Règles à respecter
- La fonction doit renvoyer une chaîne de caractères (
str) : sinon elle n'apparaît pas dans la liste du bouton. - Chaque paramètre de la fonction se mappe à un segment d'entrée, à un segment de liste ou de bouton (lié à un champ), ou, via fx, à un champ ou une mesure du type attendu ; par exemple une mesure
SelectedCustomerID = SELECTEDVALUE(Customer[CustomerID])pour passer la clé de la ligne sélectionnée. - Dans Power BI Desktop, l'action ne peut pas être déclenchée tant que le rapport n'est pas publié.
Pas à pas
Ce parcours suit le tutoriel Microsoft « Créer un flux de tâches translytique », qui ajoute la description d'un produit dans la base exemple AdventureWorksLT.
Côté Fabric
1. Dans un espace de travail sur une capacité Fabric, créez une Base de données SQL et choisissez Exemple de données pour charger AdventureWorksLT.
2. Nouvel élément > Fonctions de données utilisateur, nommez l'élément, puis Gérer les connexions pour ajouter la base SQL ; notez l'alias de la connexion.
[Capture : éditeur de fonctions de données utilisateur, volet Gérer les connexions avec la base SQL et son alias]
3. Collez le code de la fonction du tutoriel en remplaçant l'alias, Publiez, puis testez avec Exécuter. La structure d'une fonction est la suivante :
import fabric.functions as fn
udf = fn.UserDataFunctions()
@udf.connection(argName="sqlDB", alias="<ALIAS_DE_LA_CONNEXION>")
@udf.function()
def write_one_to_sql_db(sqlDB: fn.FabricSqlConnection, productDescription: str, productModelId: int) -> str:
# 1. valider les paramètres (fn.UserThrownError en cas d'erreur)
# 2. ouvrir la connexion, exécuter l'INSERT paramétré, valider la transaction
# 3. renvoyer un message de réussite
return "Product description was added"Côté Power BI Desktop
4. Connectez-vous à la base SQL depuis le Catalogue OneLake, en mode DirectQuery, et chargez les tables SalesLT.ProductDescription, SalesLT.ProductModel et SalesLT.ProductModelProductDescription.
5. Ajoutez une table des modèles de produits, un segment d'entrée de texte et, dessous, un bouton.
[Capture : canevas de Power BI Desktop avec la table des produits, le segment d'entrée de texte et le bouton]
6. Volet Format du bouton > Action : activez l'action, choisissez le type Fonction de données, puis l'espace de travail, le jeu de fonctions et la fonction. Mappez productDescription au segment d'entrée et productModelId à un champ via fx (résumé Maximum).
[Capture : volet Format du bouton, section Action avec le type Fonction de données et les deux paramètres mappés]
7. Publiez, renseignez si nécessaire les identifiants de la source dans les paramètres du modèle sémantique, puis testez : sélectionnez un produit, saisissez une description, cliquez sur le bouton.
[Capture : rapport publié, message de réussite après le clic et nouvelle description visible dans la seconde table]
Exemple
Le tutoriel complet (code de la fonction, mise en forme du bouton avec un état « Chargement ») est sur Microsoft Learn. Deux autres tutoriels prolongent le principe : un flux de mise à jour de statut avec historique et notification Teams, et des alertes affichées dans le rapport.
Pièges et bonnes pratiques
- Validez chaque paramètre dans la fonction et renvoyez une erreur explicite avec
fn.UserThrownError(). - Utilisez des requêtes SQL paramétrées (
?) pour vous protéger de l'injection SQL ; entourez l'accès à la base d'un bloctrypour renvoyer un message clair si elle est indisponible. - Après un déploiement par pipeline ou un déplacement d'espace de travail, le bouton pointe toujours vers la fonction d'origine : mettez à jour sa référence à la main, même si une fonction du même nom existe dans l'espace cible.
- Power BI Embedded n'est pris en charge que pour l'incorporation sécurisée.
- Pour un besoin simple sans Fabric, le visuel Power Automate reste une alternative (page Étendre le rapport avec des visuels supplémentaires, partie 4).
À retenir
- Une fonction de données utilisateur Python + un bouton de type Fonction de données = une écriture depuis le rapport.
- La fonction renvoie toujours une chaîne.
- Les paramètres viennent de segments d'entrée, de segments ou de mesures.
- Les références de fonction ne suivent pas les déploiements : à reprendre à la main.
Pour aller plus loin
- Comprendre les flux de tâches translytiques. Source
- Tutoriel : créer un flux de tâches translytique. Source
- Créer un bouton de fonction de données dans Power BI. Source
- Vue d'ensemble des fonctions de données utilisateur Fabric. Source
- Créer un flux de travail de mise à jour du statut. Source
Exercice
Réalisez le tutoriel Microsoft de bout en bout (durée indicative : 1 h), puis adaptez-le : ajoutez un second segment d'entrée pour saisir un commentaire et passez-le à la fonction comme paramètre supplémentaire.