Compartir a través de


Actividad Establecer variable de Azure Data Factory y Azure Synapse Analytics

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

Use la actividad Establecer variable para establecer el valor de una variable existente de tipo String, Bool o Array definida en una canalización de Data Factory o Synapse, o bien, use la actividad Establecer variable para establecer el valor devuelto de una canalización (versión preliminar).

Creación de una actividad Establecer variable con la interfaz de usuario

Para usar una actividad para establecer una variable en una canalización, complete los pasos siguientes:

  1. Seleccione el fondo de lienzo de la canalización y use la pestaña Variables para agregar una variable:

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

  1. Busque Establecer variable en el panel Actividades de la canalización y arrastre una actividad Eliminar al lienzo de la canalización.

  2. Seleccione la actividad Establecer variable en el lienzo, si aún no está seleccionada, y la pestaña Configuración para editar sus detalles.

  3. Seleccione Variable de canalización para Tipo de variable.

  4. Seleccione la variable para la propiedad Name.

  5. Escriba una expresión para establecer el valor de las variables. Esta expresión puede ser una expresión de cadena literal o cualquier combinación de expresiones y funciones dinámicas, variables del sistema o salidas de otras actividades.

Screenshot of the UI for a Set variable activity.

Configuración del valor devuelto de una canalización con la interfaz de usuario

Hemos ampliado Establecimiento de la actividad de variable para incluir una variable de sistema especial, denominada Valor devuelto de canalización, lo que permite la comunicación desde la canalización secundaria a la canalización de llamada, en el siguiente escenario.

No es necesario definir la variable antes de usarla. Para obtener más información, consulte Valor devuelto de canalización.

Screenshot with ExecutePipeline Activity.

Propiedades de tipo

Propiedad Descripción Obligatorio
name Nombre de la actividad en la canalización
description Texto que describe para qué se usa la actividad no
type Debe establecerse en SetVariable
variableName Nombre de la variable que esta actividad establece
value Literal de cadena o valor de objeto de expresión al que se asigna la variable

Incremento de una variable

Un escenario común que incluye variables es el uso de una variable como iterador dentro de una actividad Until o ForEach. En una actividad Establecer variable no se puede hacer referencia a la variable que se establece en el campo value, es decir, no hay autorreferencia. Para solucionar esta limitación, establezca una variable temporal y, a continuación, cree una segunda actividad Establecer variable. La segunda actividad Establecer variable establece el valor del iterador en la variable temporal. A continuación se muestra un ejemplo de este patrón:

  • En primer lugar, defina dos variables: una para el iterador y otra para el almacenamiento temporal.

Screenshot shows defining variables.

  • A continuación, se usan dos actividades para incrementar los valores

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": []
    }
}

El ámbito de las variables es el nivel de canalización. Esto significa que no son seguras para subprocesos y que pueden provocar un comportamiento inesperado y no deseado si se accede a ellas desde dentro de una actividad de iteración paralela, como un bucle ForEach, especialmente si el valor también se modifica dentro de esa actividad foreach.

Obtenga información sobre otra actividad de flujo de control relacionada: