Translytical taks flows: Révolution ou usine à gaz



Microsoft vient de lâcher (encore) une nouvelle solution au sein de notre environnement préféré, mais avant de commencer : un Tranlytical task flow, kesako

Voici la définition officielle de Microsoft :

Avec les flux de tâches translyticaux, vous pouvez automatiser les actions de l’utilisateur final, telles que la mise à jour des enregistrements, l’ajout d’annotations ou la création de flux de travail qui déclenchent des actions dans d’autres systèmes.

Ajouter des données : ajoutez un enregistrement de données à une table de votre base de données et voyez-le se refléter dans votre rapport. Par exemple, l’ajout d’un nouvel enregistrement client.

Modifier les données : modifiez un enregistrement existant dans une table de votre base de données et voyez-le se répercuter dans votre rapport. Par exemple, la mise à jour d’un champ d’état ou d’une annotation.

Supprimer des données : supprimez un enregistrement existant d'une table de votre base de données et voyez-le supprimé de votre rapport. Par exemple, la suppression d’un enregistrement client qui n’est plus nécessaire.

Et c'est donc ici que l'on arrive à la partie « usine à gaz ». Cela signifie que Power BI pourrait devenir une sorte d'ERP où les utilisateurs pourraient directement modifier leurs données dans le rapport. (Brrrrr... rien que d'y penser, j'en ai déjà des frissons !)


Mais comment cela marche ?

J'aurais pu me contenter de suivre le tutoriel officiel de Microsoft disponible sous le lien suivant :

https://learn.microsoft.com/fr-fr/power-bi/create-reports/translytical-task-flow-tutorial

Mais que nenni ! Nous allons utiliser notre magnifique dataset relatif aux bières et voir comment nous allons pouvoir le modifier.


Avant de commencer, il faut activer la fonctionnalité "User Data Functions" dans Fabric, ce qui nécessite un accès administrateur.

Donc, deux solutions :


  • Soit vous êtes administrateur.

  • Soit vous êtes copain avec votre administrateur (par exemple, en lui offrant une bière ;-))



Donc, la première étape est de créer une user data function.

Une "user data function" (UDF) dans Microsoft Fabric est une fonction personnalisée que vous créez pour effectuer des opérations spécifiques sur vos données. Elle vous permet de réutiliser des logiques complexes et de simplifier vos requêtes en encapsulant des calculs ou des transformations.

Vous n'avez rien compris à la définition ? Ça tombe bien, moi non plus...

Pour simplifier, une user data function va vous permettre d'écrire un code (une fonction) qui peut être appelée à divers endroits, comme depuis un rapport Power BI (par exemple, pour ajouter ou mettre à jour des données dans une base de données SQL ou un fichier CSV).

Note technique : Actuellement, le point de terminaison (endpoint) du Lakehouse ne prend pas en charge toutes les fonctionnalités d'une base de données SQL. J'ai donc déplacé notre magnifique dataset dans une base de données SQL.

Voici donc le code que nous allons utiliser dans notre UDF.



import fabric.functions as fn

udf = fn.UserDataFunctions()


@udf.connection(argName="sqlDB",alias="adwSQL")

@udf.function()


# Take a product description and product model ID as input parameters and write them back to the SQL database

# Users will provide these parameters in the PowerBI report

def update_one_to_sql_db(sqlDB: fn.FabricSqlConnection, BeerDescription: str, BeerId:str) -> str:


    # Error handling to ensure product description doesn't go above 200 characters

    if(len(BeerDescription) > 200):

        raise fn.UserThrownError("Beer Descriptions have a 200 character limit. Please shorten your description.", {"Description:": BeerDescription})


    # Establish a connection to the SQL database  

    connection = sqlDB.connect()

    cursor = connection.cursor()


    # update data into the beer_data table  

    update_description_query = "UPDATE [dbo].[beer_data] SET [beer_description] = ? WHERE [beer_id] = ?"

    cursor.execute(update_description_query, BeerDescription, BeerId)


    # Commit the transaction

    connection.commit()

    cursor.close()

    connection.close()  


    return "Beer description was updated"


Une fois que tout est prêt dans notre code, on le publie puis on peut le tester
Donc dans mon interface de test, je passe deux parametres (l'ID d'une biere, et la description que je souhaite ajouter)

Et voila, ma fonction a bien modifié la description de notre biere Fox Tail avec le texte: Unicorns are great but expensive

Et voila, je sais sur que tu risques de me dire cher lecteure, ouais, t'as juste écris une query SQL dans du pyspark, je fais ça dans Jupyter depuis des années... 

Mais non, je ne te prends pas pour un jambon, nous sommes actuellement à la premiere phase: Créer la fonction

Maintenant, nous allons créer un "rapport Power BI", pour vous montrer ce qu'on va pouvoir faire avec cette fonction
Avant de pouvoir créer le rapport, il faut IMPERATIVEMENT activer deux features en preview dans Power BI Desktop

  • Translytical Task Flow

  • Text Slicer Visual

Voici donc mon chef d'oeuvre

Passons donc à la démo, je pense que nous allons revoir cette horrible définition de la biere de ma région: l'orval

Je souhaiterais rempalcer la description par cette description: (non, je ne suis pas fou, c'est mon ami copilot qui me l'a rédigé ;-) )

Chère Orval, avec ta robe ambrée et ton col de dentelle, tu promets une complexité que seule ta nature sauvage et évolutive sait offrir. Chaque gorgée est un dialogue unique, une amertume franche qui s'adoucit en une fidélité fruitée, faisant de toi bien plus qu'une bière, un véritable amour de trappiste. 

Malheureusement, ma description dépassant 200 caracteres, j'ai eu droit à une petite erreur ( limitation écrite dans ma fonction, donc la fonction prend en compte ce morceau de code)

J'ai donc revu ma copie pour quelque chose de moins pédant, dont voici la description

À toi, Orval, trésor ambré au goût si unique. Chaque bulle raconte ta légende, chaque gorgée est une promesse d'éternité. Mon Val d'Or, ma divine gorgée.  (Pour clore tout débat futile, on dit UN orval et non UNE orval (vous apprendrez au fur et à mesure que j'ai TOUJOURS raison))

La nouvelle fonctionnalité permettant d'écrire dans les sources de données directement depuis Power BI le positionne comme un véritable hub opérationnel. Si le potentiel est immense, sa mise en œuvre pratique appelle à la prudence.

Avantages :

  • Centralisation : Power BI n'est plus seulement un outil de visualisation, mais aussi d'action.

  • Efficacité : Les utilisateurs peuvent corriger ou enrichir les données sans quitter leur rapport.

Points de vigilance :

  • Licence : L'accès à cette fonctionnalité est conditionné par une licence Microsoft Fabric.

  • Gouvernance : Une stratégie de gouvernance des données mature est indispensable pour contrôler qui peut écrire, où et comment.

  • Risque de divergence des données : C'est le défi principal. L'écriture ne modifie que la destination (base de données, warehouse), pas la source d'origine (ex: fichiers plats). À terme, cela peut créer un décalage dangereux entre les données de référence et celles des rapports.

Il s'agit donc d'une évolution puissante mais exigeante. Son adoption à grande échelle semble pour l'instant peu probable, la réservant aux organisations les plus matures sur le plan de la data.

Enregistrer un commentaire

0 Commentaires