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


Установка значения возврата конвейера в Azure Data Factory и Azure Synapse Analytics

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

Совет

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

В парадигме конвейера вызова-дочернего конвейера можно использовать активность Set Variable для возврата значений из дочернего конвейера в вызывающий конвейер. В следующем сценарии присутствует дочерний конвейер через Действие выполнения конвейера. И мы стремимся получить информацию из дочернего конвейера, чтобы затем использовать ее в вызывающем конвейере.

Снимок экрана с активностью ExecutePipeline.

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

Предпосылка — вызов дочернего конвейера

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

Скриншот настройки ExecutePipeline Activity для ожидания завершения.

Настройка значения возврата в дочернем конвейере

Мы расширили действие Set Variable, чтобы включить системные переменные Возвращаемое значение конвейера. Их не нужно определять на уровне конвейера (в отличие от других переменных, используемых в конвейере).

  1. Выполните поиск элемента Set Variable на панели действий конвейера и перетащите действие Set Variable на холст конвейера.
  2. Выберите действие "Задать переменную" на холсте, если оно еще не выбрано, а затем выберите его вкладку "Переменные", чтобы изменить сведения.
  3. Выберите возвращаемое значение Pipeline как тип переменной.
  4. Выберите "Создать" , чтобы добавить новую пару значений ключа.
  5. Количество пар "ключ-значение", которые можно добавить, ограничено только ограничением размера возвращаемого JSON (4 МБ).

Скриншот показывает пользовательский интерфейс для возвращаемого значения потока.

Существует несколько вариантов для типов значений, включая

Тип Имя Описание
Строка Константное строковое значение. например: "ADF — это классно"
Выражение Он позволяет ссылаться на выходные данные из предыдущих действий. Здесь можно использовать интерполяцию строк для включения значений выражений, таких как "The value is @{guid()}".
Массив Он ожидает массив значений типа string. Нажмите клавишу Enter, чтобы разделить значения в массиве
Логический Истина или Ложь
Null Состояние владельца места сигнала; Значение равно константе NULL
Int Числовое значение целочисленного типа. Например: 42
Тип с плавающей запятой Числовое значение типа float. Например: 2.71828
Объект Предупреждение только для сложных вариантов использования. Он позволяет внедрить список пар "ключевое значение" для значения.

Значение типа объекта определяется следующим образом:

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

Извлечение значения в процессе вызова потока обработки

Возвращаемое значение конвейера дочернего конвейера становится выходным результатом действия «Выполнение действия конвейера». Вы можете получить сведения с помощью @activity('Execute Pipeline1').output.pipelineReturnValue.keyName. Вариант использования не имеет ограничений. Например, можно использовать

Снимок экрана показывает вызывающий конвейер.

При ссылке на возвращаемые значения потока имеется два заметных примечания.

  1. С типом "Object" вы можете углубиться во вложенный JSON-объект, например, @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
  2. С помощью типа Array можно указать индекс в списке через @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0]. Число индексируется с нуля, то есть начинается с 0.

Примечание.

Убедитесь, что имя ключа , на которое вы ссылаетесь, существует в дочернем конвейере. Построитель выражений ADF не может подтвердить проверку ссылочной целостности. Конвейер завершится ошибкой, если ключ, на который он ссылается, отсутствует в данных.

Особые соображения

  • Хотя в конвейере можно включить несколько действий установки возвращаемого значения конвейера, важно убедиться, что в конвейере выполняется только один из них.

    Снимок экрана: возвращаемое значение конвейера и ветвление.

    Чтобы избежать ранее описанной проблемы отсутствующего ключа при вызове потока данных, мы рекомендуем использовать один и тот же список ключей для всех ветвей в дочернем потоке данных. Рекомендуется использовать типы NULL для ключей, не имеющих значений, в определенной ветви.

  • Язык выражений Фабрика данных Azure напрямую не поддерживает встроенные объекты JSON. Вместо этого необходимо правильно объединить строки и выражения.

    Например, для следующего выражения JSON:

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

    Эквивалентным будет выражение в Azure Data Factory следующее:

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

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