Поделиться через


Действие «Задать переменную» в фабрике данных Azure и Azure Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Используйте действие Set Variable, чтобы задать значение существующей переменной типа String, Bool или Array, определенной в конвейере Фабрики данных или Synapse, или использовать действие Set Variable для задания возвращаемого значения конвейера (предварительная версия).

Создание действия "Задать переменную" с помощью пользовательского интерфейса

Чтобы использовать действие Set Variable в конвейере, выполните следующие действия:

  1. Выберите фон холста конвейера и добавьте переменную с помощью вкладки "Переменные":

Снимок экрана: пустой холст конвейера с вкладкой

  1. Выполните поиск элемента Set Variable на панели действий конвейера и перетащите действие Set Variable на холст конвейера.

  2. Выберите действие "Задать переменную" на холсте, если оно еще не выбрано, а затем перейдите на вкладку "Параметры ", чтобы изменить ее сведения.

  3. Выберите переменную конвейера для типа переменной.

  4. Выберите переменную для свойства "Имя".

  5. Введите выражение для задания значения переменных. Это выражение может быть литеральным строковым выражением или любым сочетанием динамических выражений, функций, системных переменных или выходных данных других действий.

Снимок экрана: пользовательский интерфейс для действия

Задание возвращаемого значения конвейера с помощью пользовательского интерфейса

Мы расширили действие "Задать переменную", чтобы включить специальную системную переменную с именем "Возвращаемое значение конвейера", позволяя обмен данными между дочерним конвейером и вызывающим конвейером в следующем сценарии.

Перед его использованием не нужно определять переменную. Дополнительные сведения см. в разделе "Возвращаемое значение конвейера"

Снимок экрана: действие ExecutePipeline.

Свойства типа

Свойство Описание: Обязательное поле
name Имя действия в конвейере yes
описание Текст, описывающий действия no
type Необходимо задать значение SetVariable yes
variableName Имя переменной, которая задается этим действием yes
значение Строковый литерал или значение объекта выражения, которому назначена переменная yes

Увеличение переменной

Распространенный сценарий, в котором участвует переменная, — использовать переменную в качестве итератора в действии Until или ForEach . В действии переменной Set нельзя ссылаться на переменную , заданную в поле, т. е value . не ссылаться на нее. Чтобы обойти это ограничение, задайте временную переменную и создайте второе действие Set переменной . Второе действие set переменной задает значение итератора временной переменной. Ниже приведен пример этого шаблона:

  • Сначала вы определяете две переменные: один для итератора и один для временного хранилища.

Снимок экрана: определение переменных.

  • Затем для увеличения значений используется два действия.

Снимок экрана: переменная увеличения.

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

Переменные ограничены на уровне конвейера. Это означает, что они не являются потокобезопасными и могут вызвать непредвиденное и нежелательное поведение, если доступ к ним осуществляется в рамках действия параллельной итерации, например цикла ForEach, особенно если значение также изменяется в рамках этого действия foreach.

Узнайте еще об одном действии с потоком контроля: