Partager via


Définir la valeur de retour d’un pipeline dans Azure Data Factory et Azure Synapse Analytics

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Dans le paradigme pipeline appelant-pipeline enfant, vous pouvez utiliser l’activité Définir une variable pour retourner des valeurs du pipeline enfant au pipeline appelant. Dans le scénario suivant, nous avons un pipeline enfant par le biais de l’activité Exécuter le pipeline. Et nous voulons récupérer des informations du pipeline enfant pour les utiliser ensuite dans le pipeline appelant.

Capture d’écran de l’activité ExecutePipeline.

Introduisez une valeur de retour de pipeline, un dictionnaire de paires clé-valeur, qui permet de communiquer entre les pipelines enfants et le pipeline parent.

Prérequis - Appel d’un pipeline enfant

En tant que prérequis, votre conception a besoin d’une exécuter l’activité de pipeline appeler un pipeline enfant, avec ’attente à l’achèvement activée sur l’activité.

Capture d’écran de la définition de l’activité Exécuter le pipeline sur Attendre la fin de l’exécution.

Configurer la valeur de retour de pipeline dans le pipeline enfant

Nous avons développé l’activité Définir une variable pour inclure la Valeur de retour de pipeline des variables système. Vous n’avez pas besoin de les définir au niveau du pipeline (contrairement à d’autres variables que vous utilisez dans le pipeline).

  1. Recherchez Définir une variable dans le volet Activités de pipeline, puis faites glisser une activité Définir une variable vers le canevas du pipeline.
  2. Sélectionnez l’activité Définir une variable sur le canevas si elle ne l’est pas déjà, puis son onglet Variables pour en modifier les détails.
  3. Choisissez Valeur de retour de pipeline comme type de variable.
  4. Sélectionnez Nouvelle pour ajouter une nouvelle paire clé-valeur.
  5. Le nombre de paires clé-valeur qui peuvent être ajoutées est limité uniquement par la limite de taille du JSON retourné (4 Mo).

Capture d’écran montrant l’interface utilisateur pour la valeur de retour de pipeline.

Il existe quelques options pour les types valeur, notamment

Nom de type Description
Chaîne Une valeur constante de type chaîne de caractères. par exemple : « ADF est génial »
Expression Il vous permet de référencer la sortie des activités précédentes. Vous pouvez utiliser l’interpolation de chaîne ici pour inclure des valeurs d’expression en ligne telles que "The value is @{guid()}".
Tableau Il attend un tableau de valeurs de chaîne. Appuyez sur la touche « Entrée » pour séparer les valeurs dans le tableau.
Boolean True ou False
Null État de l’espace réservé aux signaux ; la valeur est une constante null
Int Une valeur numérique de type entier. Par exemple : 42
Float Une valeur numérique de type flottant. Par exemple : 2.71828
Object Avertissement Cas d’usage compliqués uniquement. Il vous permet d’incorporer une liste de paires clé-valeur comme type pour la valeur.

La valeur du type Object est définie comme suit :

[{"key": "myKey1", "value": {"type": "String", "content": "hello world"}}, 
 {"key": "myKey2", "value": {"type": "String", "content": "hi"}}
]

Récupération de la valeur dans le pipeline appelant

La valeur de retour de pipeline du pipeline enfant devient la sortie de l’activité Exécuter le pipeline. Vous pouvez récupérer les informations avec @activity('Execute Pipeline1').output.pipelineReturnValue.keyName. Le cas d’usage est illimité. Par exemple, vous pouvez utiliser

Capture d’écran montrant le pipeline appelant.

Il y a deux éléments notables pour référencer des valeurs de retour de pipeline.

  1. Avec le type Object, vous pouvez aller plus loin dans l’objet json imbriqué, par exemple @activity(’Execute Pipeline1’).output.pipelineReturnValue.keyName.nextLevelKey
  2. Avec le type Array, vous pouvez spécifier l’index dans la liste avec @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0]. Le nombre est indexé à zéro, ce qui signifie qu’il commence à 0.

Notes

Vérifiez que le keyName que vous référencez existe dans votre pipeline enfant. Le générateur d’expressions ADF ne peut pas confirmer la référence pour vous. Le pipeline échoue si la clé référencée est manquante dans le contenu.

Points particuliers à prendre en compte

  • Bien que vous puissiez inclure plusieurs activités Définir la valeur de retour de pipeline dans un pipeline, il est important de s’assurer qu’une seule d’entre elles est exécutée dans le pipeline.

    Capture d’écran avec valeur de retour de pipeline et branchement.

    Pour éviter le problème de clé manquante décrit précédemment dans le pipeline d’appel, nous vous encourageons à avoir la même liste de clés pour toutes les branches du pipeline enfant. Envisagez d’utiliser des types null pour les clés qui n’ont pas de valeurs, dans une branche spécifique.

  • Le langage d’expression Azure Data Factory ne prend pas directement en charge les objets JSON inline. Au lieu de cela, il est nécessaire de concaténer correctement des chaînes et des expressions.

    Par exemple, pour l’expression JSON suivante :

    {
      "datetime": "@{utcnow()}",
      "date": "@{substring(utcnow(),0,10)}",
      "year": "@{substring(utcnow(),0,4)}",
      "month": "@{substring(utcnow(),5,2)}",
      "day": "@{substring(utcnow(),8,2)}"
    }
    

    Une expression Azure Data Factory équivalente serait la suivante :

    @{
      concat(
        '{',
        '"datetime": "', utcnow(), '", ',
        '"date": "', substring(utcnow(),0,10), '", ',
        '"year": "', substring(utcnow(),0,4), '", ',
        '"month": "', substring(utcnow(),5,2), '", ',
        '"day": "', substring(utcnow(),8,2), '"',
        '}'
      )
    }
    

Découvrir une autre activité de flux de contrôle connexe :