Прочитать на английском

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


Использование параметров, выражений и функций в фабрике данных Azure

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

Совет

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

В этом документе основное внимание уделено изучению фундаментальных концепций с различными примерами по созданию параметризованных конвейеров данных в фабрике данных Azure. Параметризация и динамические выражения являются значительными дополнениями к ADF, так как они могут значительно сэкономить время и обеспечить гораздо более гибкое решение для ETL (извлечение, преобразование и загрузка) или ELT (извлечение, загрузка, преобразование), что значительно сократит затраты на обслуживание решения и ускорит внедрение новых функций в существующие конвейеры. Эти преимущества обусловлены тем, что параметризация уменьшает количество конкретных значений переменных и увеличивает объем повторно используемых объектов и процессов.

Пользовательский интерфейс и параметры фабрики данных Azure

Если вы не знакомы с использованием параметров в пользовательском интерфейсе ADF, ознакомьтесь с визуальными пояснениями в статьях Пользовательский интерфейс Data Factory для связанных служб с параметрами и Пользовательский интерфейс Data Factory для конвейеров на основе метаданных с параметрами.

Основные понятия параметров и выражений

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

Например:

"name": "value"

или

"name": "@pipeline().parameters.password"

Выражения могут встречаться в любом месте строкового значения JSON и всегда возвращают другое значение JSON. Здесь password — это параметр конвейера в выражении. Если значение JSON является выражением, текст выражения извлекается без знака \"\@\". Если требуется строковый литерал, начинающийся с @, его необходимо экранировать с помощью @@. В примерах ниже показано, как вычисляются выражения.

Значение JSON Результат
параметры Возвращаются символы 'parameters'.
параметры[1] Символы 'parameters[1]' возвращаются.
"@@" Возвращается строка из 1 символа, содержащая символ \@\.
" @" Возвращается строка из 2 символов, содержащая символ \@\.

Выражения также могут содержаться внутри строк, используя возможность интерполяции строк, где выражения заключаются в @{ ... }. Например: "name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"

При использовании интерполяции строки результатом всегда будет строка. Предположим, myNumber определено как 42, а myString — как foo:

Значение JSON Результат
"@pipeline().parameters.myString" Возвращает foo как строку.
@{pipeline().parameters.myString} Возвращает foo как строку.
"@pipeline().parameters.myNumber" Возвращает 42 как номер.
@{pipeline().parameters.myNumber} Возвращает 42 как строку.
Ответ: @{pipeline().parameters.myNumber} Возвращает строку Answer is: 42.
"@concat('Ответ: ', string(pipeline().parameters.myNumber))" Возвращает строку Answer is: 42.
Ответ: @{pipeline().parameters.myNumber} Возвращает строку Answer is: @{pipeline().parameters.myNumber}.

Примеры использования параметров в выражениях

Пример сложных выражений

Приведенный ниже пример - это сложный пример, который ссылается на глубокую подкатегорию выходных данных деятельности. Чтобы сослаться на параметр конвейера, который вычисляется в подполе, используйте синтаксис [] вместо оператора точка (.), как в случае с subfield1 и subfield2.

@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*

Редактор динамического содержимого

Редактор динамического содержимого автоматически экранирует символы в содержимом после завершения редактирования. Например, следующее содержимое в редакторе —это интерполяция строк с двумя функциями выражений.

{ 
  "type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
  "name": "@{toUpper('myData')}"
}

Редактор динамического содержимого преобразует вышеприведенное содержимое в выражение "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}". Результатом этого выражения является строка формата JSON, показанная ниже.

{
  "type": "Table",
  "name": "MYDATA"
}

Набор данных с параметрами

В следующем примере BlobDataset принимает параметр с именем path. Его значение используется для задания значения свойства folderPath с помощью выражения: dataset().path.

{
    "name": "BlobDataset",
    "properties": {
        "type": "AzureBlob",
        "typeProperties": {
            "folderPath": "@dataset().path"
        },
        "linkedServiceName": {
            "referenceName": "AzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "parameters": {
            "path": {
                "type": "String"
            }
        }
    }
}

Конвейер с параметрами

В следующем примере конвейер принимает параметры inputPath и outputPath. Путь к параметризованному набору данных типа blob задается с помощью значений этих параметров. Синтаксис, используемый здесь: pipeline().parameters.parametername.

{
    "name": "Adfv2QuickStartPipeline",
    "properties": {
        "activities": [
            {
                "name": "CopyFromBlobToBlob",
                "type": "Copy",
                "inputs": [
                    {
                        "referenceName": "BlobDataset",
                        "parameters": {
                            "path": "@pipeline().parameters.inputPath"
                        },
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "BlobDataset",
                        "parameters": {
                            "path": "@pipeline().parameters.outputPath"
                        },
                        "type": "DatasetReference"
                    }
                ],
                "typeProperties": {
                    "source": {
                        "type": "BlobSource"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                }
            }
        ],
        "parameters": {
            "inputPath": {
                "type": "String"
            },
            "outputPath": {
                "type": "String"
            }
        }
    }
}

Вызов функций внутри выражений

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

Строковые функции

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

Строковая функция Задача
concat Объединяет две или более строк и возвращает объединенную строку.
endsWith Проверяет, заканчивается ли строка определенной подстрокой.
guid Создает глобально уникальный идентификатор (GUID) в виде строки.
indexOf Возвращает начальную позицию подстроки.
lastIndexOf Возвращает начальную позицию последнего вхождения подстроки.
заменить Заменяет подстроку указанной строкой и возвращает обновленную строку.
split Возвращает массив, содержащий подстроки, разделенные запятыми, из большей строки, основываясь на указанном символе разделителя в исходной строке.
Начинается с Проверяет, начинается ли строка с определенной подстроки.
подстрока Возвращает символы из строки, начиная с указанной позиции.
toLower Возвращает строку в нижнем регистре.
toUpper Возвращает строку символов в верхнем регистре.
trim Удаляет все начальные и конечные пробелы и возвращает обновленную строку.

Функции сбора

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

Функция для коллекций Задача
содержит Проверяет наличие определенного элемента в коллекции.
empty Проверяет, является ли коллекция пустой.
первый Верните первый элемент из коллекции.
перекрёсток Возвращает коллекцию, которая содержит только общие элементы в указанных коллекциях.
join Возвращает строку, содержащую все элементы из массива, в которой каждый символ отделен разделителем.
последний Возвращает последний элемент из коллекции.
length Возвращает число элементов в строке или массиве.
skip Удаляет элементы из начала коллекции и возвращает все другие элементы.
take Возвращает элементы, расположенные в начале коллекции.
union Возвращает коллекцию, которая содержит все элементы из указанных коллекций.

Логические функции

Эти функции полезны в условиях и могут использоваться для оценки логики любого типа.

Функция логического сравнения Задача
и Проверяет, истинны ли все выражения.
равно Проверяет, эквивалентны ли оба значения.
больше Проверяет, является ли первое значение большим, чем второе.
большеИлиРавно Проверяет, является ли первое значение большим, чем второе, или равным ему.
если Проверьте, какое значение имеет выражение: true или false. Возвращает указанное значение на основе результата.
меньше Проверяет, является ли первое значение меньшим, чем второе.
меньшеИлиРавно Проверяет, является ли первое значение меньшим, чем второе, или равным ему.
не Проверьте, является ли выражение ложным.
или Проверяет, является ли хотя бы одно выражение истинным.

Функции преобразования

Эти функции используются для преобразования между собственными типами языка:

  • строка
  • целое число
  • с плавающей запятой
  • boolean
  • массивы
  • словари
Функция преобразования Задача
array. Возвращает массив из одного экземпляра указанных входных данных. Для использования нескольких входных данных см. раздел createArray.
base64 Верните строку, закодированную в base64.
base64ToBinary Возвращает двоичную версию строки с кодировкой base64.
base64ToString Возвращает строковую версию строки с кодировкой base64.
binary Возвращает двоичную версию входного значения.
bool Возвращает логическую версию входного значения.
coalesce Возвращает первое ненулевое значение из одного или нескольких параметров.
createArray Возвращает массив из нескольких экземпляров входных данных.
dataUri Возвращает URI данных входного значения.
dataUriToBinary Возвращает двоичную версию URI.
dataUriToString Возвращает строковую версию URI данных.
decodeBase64 Возвращает строковую версию строки с кодировкой base64.
decodeDataUri Верните двоичную версию для URI данных.
decodeUriComponent Возвращает строку, которая заменяет escape-символы декодированными версиями.
encodeUriComponent Верните строку, в которой символы, небезопасные для URL-адреса, заменены экранирующими символами.
float Возвращает значение с плавающей запятой в качестве входного значения.
int Возвращает целочисленную версию строки.
json Возвращает значение типа JSON либо объект для строки или XML.
string Возвращает строковую версию входного значения.
uriComponent Возвращает кодированную версию URI для входного значения, заменив символы, опасные для URL-адреса, на escape-символы.
uriComponentToBinary Возвращает двоичную версию строки с закодированным URI.
uriComponentToString Возвращает строковую версию строки с закодированным URI.
xml Возвращает XML-версию строки.
xpath Проверяет XML на наличие узлов или значений, которые соответствуют выражению XPath, и возвращает соответствующие узлы или значения.

Математические функции

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

Математическая функция Задача
добавление Возвращает результат сложения двух чисел.
div Возвращает результат деления двух чисел.
max Возвращает наибольшее значение из набора чисел или массива.
мин Возвращает наименьшее значение из набора чисел или массива.
mod Возвращает остаток результата деления двух чисел.
mul Возвращает результат умножения двух чисел.
rand Возвращает случайное целое число из указанного диапазона.
диапазон Возвращает массив целых чисел, который начинается с заданного целого числа.
sub Вычитает второе число из первого числа и возвращает результат.

Функции дат

Функция даты и времени Задача
addDays Добавляет количество дней к метке времени.
addHours Добавляет количество часов к метке времени.
addMinutes Добавляет количество минут к метке времени.
addSeconds Добавляет количество секунд к метке времени.
addToTime Добавляет количество единиц времени к метке времени. См. раздел getFutureTime.
convertFromUtc Преобразовывает метку времени из Всемирного координированного времени (UTC) в целевой часовой пояс.
convertTimeZone Преобразовывает метку времени из исходного часового пояса в целевой.
convertToUtc Преобразует метку времени из исходного часового пояса в координированное универсальное время (UTC).
dayOfMonth Возвращает компонент дня месяца из метки времени.
dayOfWeek Возвращает компонент дня недели из метки времени.
dayOfYear Возвращает компонент дня года из метки времени.
formatDateTime Возвращает метку времени в виде строки в произвольном формате.
getFutureTime Возвращает текущую метку времени, а также указанные единицы времени. См. раздел addToTime.
getPastTime Возвращает текущую метку времени, вычитая указанные единицы времени. См. раздел subtractFromTime.
startOfDay Возвращает начало дня для метки времени.
startOfHour Возвращает начало часа для метки времени.
startOfMonth Возвращает начало месяца для метки времени.
subtractFromTime Вычтите некоторое количество единиц времени из метки времени. См. раздел getPastTime.
клещи Возвращает значение свойства ticks для указанной метки времени.
utcNow Возвращает текущую метку времени в виде строки.

Подробные примеры для практики

Подробный конвейер копирования Azure Data Factory с параметрами

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

Подробный конвейер обработки потока данных с параметрами для сопоставления

Следуйте статье Сопоставление потока данных с параметрами для полного примера использования параметров в потоке данных.

Подробные сведения о конвейере с параметрами, управляемом метаданными

Используйте конвейер с параметрами, управляемый метаданными, чтобы узнать больше об использовании параметров для проектирования конвейеров, управляемых метаданными. Это популярный вариант использования параметров.

Список системных переменных, которые можно использовать в выражениях, см. в статье System variables supported by Azure Data Factory (Системные переменные, поддерживаемые фабрикой данных Azure).


Дополнительные ресурсы