Accueil > ADF & Synapse : mettre en exergue la fonctionnalité « Set Pipeline Return Value »
Djilali TOUAZI
20 juin 2023

ADF & Synapse : mettre en exergue la fonctionnalité « Set Pipeline Return Value »

ADF & Synapse : mettre en exergue la fonctionnalité « Set Pipeline Return Value »

Azure Synapse est un service d’analyse à destination des entreprises qui permet de raccourcir le délai d’obtention d’analyses sur les entrepôts de données et des systèmes Big Data.

Dans ce nouvel article sur Azure Synapse, nous vous proposons de faire le point sur la fonctionnalité « Set Pipeline Return Value ».

Cette fonctionnalité permet de passer des valeurs depuis un Pipeline appelé depuis le pipeline appelant. En effet, jusqu’à maintenant, cette fonctionnalité était manquante. Nous allons donc nous intéresser à  son utilité et son utilisation à travers un cas d’usage : l’envoi d’un email via Azure Logic Apps.

 

Présentation des Activités

 

Présentation de l’activité « Execute Pipeline »

 

L’activité « Execute Pipeline » permet de créer une encapsulation d’une série d’activités, souvent afin de mettre en place le principe de modularité. Nous pouvons ainsi passer des paramètres du Pipeline Appelant (Parent) vers le sous-pipeline Appelé (Enfant).

 

Mais comment faire passer un résultat du pipeline Enfant vers son Parent ?

Activité « Execute Pipeline »

Activité « Execute Pipeline »

 

Présentation de l’activité « Set Variable »

 

L’activité « Execute Pipeline », en plus des paramètres, peut aussi supporter une déclaration de variable.

Une variable se caractérise par la possibilité de calculer sa valeur dynamiquement.

En déclarant une variable dans le pipeline Enfant, on permet d’établir un échange de valeur, uniquement dans le sens descendant (du Parent vers l’Enfant via un Paramètre Enfant).

Activité “Set Variable”

Activité “Set Variable”

 

Option “Set Pipeline Return Value”

 

Pour permettre un échange ascendant, Azure a récemment ajouté l’option (à date en préversion) : Set Pipeline Return Value.

Concrètement, dans le pipeline Enfant, nous allons passer par cette option en vue de communiquer au pipeline Parent une valeur sortante.

Option “Set Pipeline Return Value”

Option “Set Pipeline Return Value”

 

Cas d’usage : envoyer un email via Azure Logic Apps

 

Supposons que plusieurs capteurs envoient à intervalle régulier des informations. Ces dernières sont traitées et sauvegardées en streaming.

Nous devons mettre en place une alerte en envoyant un email dès qu’un capteur cesse d’envoyer des informations depuis une certaine durée.

Notre pipeline Synapse consulte régulièrement ces informations pour repérer tous les capteurs en anomalie.

Il existe deux façons de faire :

  • Envoyer un email dès qu’une anomalie est repérée (un email par anomalie)
  • Envoyer un seul email regroupant tous les capteurs en anomalie.

Ce qui nous intéresse ici est ce second cas : il nous oblige à parcourir tous les capteurs, tester s’ils sont en anomalie, et dès lors incrémenter notre message par :  « Le capteur » ,Capt_N, « est absent depuis au moins une semaine ».

 

4 étapes à suivre

 

Voici les 4 étapes que nous allons voir dans le cadre de notre cas d’usage :

  1. Création du DATASET
  2. Création du Pipeline ENFANT
  3. Création du Pipeline PARENT
  4. Création d’Azure Logic APP

 

Étape 1 : Création du DATASET

Prenons l’exemple (à titre purement illustratif) d’un  jeu de données de 20 capteurs et leur dernière date :

Dataset test

Dataset test

 

Étape 2 : Création du Pipeline ENFANT

 

Il faut noter la présence de trois paramètres (2+1) : deux paramètres pour introduire les informations du DATASET, et le paramètre « P_Old_Value » qui passera d’une itération « FOR EACH » à une autre les valeurs précédentes listant les capteurs en anomalie.

Paramètres du pipeline ENFANT

Paramètres du pipeline ENFANT

 

Ce pipeline ENFANT embarque l’activité « Set Variable Activity » pour permettre d’enrichir le corps de notre email si besoin à l’itération N.

Utiliser l'option « Set Pipeline Return Value »

Utiliser l’option « Set Pipeline Return Value »

 

Étape 3 : Création du Pipeline PARENT

 

L’élément fondamental pour notre démarche est la nécessité de déclarer une variable, et poser ainsi les conditions d’un échange ascendant.

Création du pipeline PARENT

Création du pipeline PARENT

 

Notons la formule utilisée pour donner une valeur au paramètre « P_Old_Value »:

P_Old_Value= @variable(V_PL_MessageCumul)

 

Par cette formule, le pipeline récupéra le contenu de la variable du Pipeline ENFANT.

Mécanisme de passage de la valeur au pipeline ENFANT

Mécanisme de passage de la valeur au pipeline ENFANT

 

La valeur de la variable « V_PL_MessageCumul » récupère la valeur sortante du pipeline ENFANT via la formule : @activity(‘Execute Pipeline1’).output.pipelineReturnValue.V_IncrementalValueOutPut

Mécanisme de passage de la valeur au pipeline PARENT

Mécanisme de passage de la valeur au pipeline PARENT

 

Étape 4 : Création d’Azure Logic Apps

 

Le workflow de la Logic Apps est :   < HTTP request is received. Send an email (V2)> .

Le trigger HTTP utilisera la méthode POST avec le body suivant :

 

Configuration de la Logic App

Configuration de la Logic App

 

Paramétrage de l’activité « WEB » dans notre pipeline Synapse

Paramétrage de l’activité « WEB » dans notre pipeline Synapse

 

Synapse : l’essentiel à retenir

 

Dans cet article, nous avons traité deux points dans Synapse :

  • L’utilisation de l’option « Set Pipeline Return Value ». Nous avons vu le mécanisme d’échange ascendant entre deux pipelines : Enfant vers Parent.
  • Nous avons illustré cette option avec l’action d’envoi d’email en utilisant une Azure Logic App.

L’avantage de cette option « Set Pipeline Return Value » est de pouvoir regrouper les alertes dans un seul message, et donc un seul email (ce qui permet un gain de performance et des économies sur les coûts de Logic Apps).

Un autre cas d’usage est de construire dynamiquement un script SQL, rendant ainsi possible le lancement de plusieurs requêtes paramétrables dans une seule activité « Script ». L’impact sur le temps d’exécution peut ne pas être négligeable.

Le coût de l’utilisation d’un Runtime dans Synapse est calculé en se basant sur le nombre d’activités et leur nature. En réduisant l’activité « Script » à un seul lancement englobant plusieurs requêtes issues d’une boucle FOR EACH, on réduit par là même les coûts de nos runs.

 

Vous souhaitez en savoir plus et être accompagné dans vos projets ? Contactez-nous !

 

Formation

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.