Partager via


Activité de définition de variable 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 !

Utilisez l’activité Définir une variable pour définir la valeur d’une variable existante de type Chaîne, Booléen ou Tableau définie dans un pipeline Data Factory ou Synapse, ou utilisez l’activité Définir une variable pour définir une valeur de retour de pipeline (préversion).

Créer une activité Définir une variable avec l’interface utilisateur

Pour utiliser une activité Définir une variable dans un pipeline, procédez comme suit :

  1. Sélectionnez l’arrière-plan du canevas du pipeline et utilisez l’onglet Variables pour ajouter une variable :

Screenshot of an empty pipeline canvas with the Variables tab selected with an array type variable named TestVariable.

  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 n’est pas déjà sélectionnée, puis sélectionnez l’onglet Paramètres pour en modifier les détails.

  3. Sélectionnez Variable de pipeline pour votre Type de variable.

  4. Sélectionnez la variable pour la propriété Name.

  5. Entrez une expression pour définir la valeur des variables. Cette expression peut être une expression de chaîne littérale ou toute combinaison d’expressions dynamiques, de fonctions, de variables système ou de sorties d’autres activités.

Screenshot of the UI for a Set variable activity.

Définition d’une valeur de retour de pipeline avec l’interface utilisateur

Nous avons développé l’activité de définition de variable pour inclure une variable système spéciale, nommée Valeur renvoyée du pipeline, permettant la communication entre le pipeline enfant et le pipeline appelant, dans le scénario suivant.

Vous n’avez pas besoin de définir la variable avant de l’utiliser. Pour plus d’informations, consultez Valeur de retour de pipeline

Screenshot with ExecutePipeline Activity.

Propriétés type

Propriété Description Obligatoire
name Nom de l’activité dans le pipeline Oui
description Texte décrivant l’activité non
type Doit être défini sur SetVariable Oui
variableName Nom de la variable définie par cette activité Oui
value Chaîne littérale ou valeur d’objet d’expression à laquelle la variable est affectée Oui

Incrémentation d’une variable

Un scénario courant impliquant une variable consiste à utiliser une variable comme itérateur dans une activité Until ou ForEach. Dans une activité de définition de la variable, vous ne pouvez pas référencer la variable définie dans le valuechamp, c’est-à-dire qu’il n’y a pas d’autoréférencement. Pour contourner cette limitation, définissez une variable temporaire, puis créez une deuxième activité Définir une variable. La deuxième activité Définir une variable définit la valeur de l’itérateur sur la variable temporaire. Voici un exemple illustrant ce modèle :

  • Vous devez d’abord définir deux variables : l’une pour l’itérateur et l’autre pour le stockage temporaire.

Screenshot shows defining variables.

  • Vous utilisez ensuite deux activités pour incrémenter des valeurs

Screenshot shows increment variable.

{
    "name": "pipeline1",
    "properties": {
        "activities": [
            {
                "name": "Increment J",
                "type": "SetVariable",
                "dependsOn": [],
                "policy": {
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "variableName": "temp_j",
                    "value": {
                        "value": "@add(variables('counter_i'),1)",
                        "type": "Expression"
                    }
                }
            },
            {
                "name": "Set I",
                "type": "SetVariable",
                "dependsOn": [
                    {
                        "activity": "Increment J",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "variableName": "counter_i",
                    "value": {
                        "value": "@variables('temp_j')",
                        "type": "Expression"
                    }
                }
            }
        ],
        "variables": {
            "counter_i": {
                "type": "Integer",
                "defaultValue": 0
            },
            "temp_j": {
                "type": "Integer",
                "defaultValue": 0
            }
        },
        "annotations": []
    }
}

Les variables sont délimitées au niveau du pipeline. Cela signifie qu’elles ne sont pas thread-safe et peuvent entraîner un comportement inattendu et indésirable si elles sont accessibles à partir d’une activité d’itération parallèle comme une boucle ForEach, en particulier lorsque la valeur est également modifiée au sein de cette activité ForEach.

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