Обучение
Модуль
Оркестрация перемещения и преобразования данных в фабрике данных Azure - Training
Оркестрация перемещения и преобразования данных в Фабрике данных Azure или Azure Synapse Pipeline
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этом документе основное внимание уделено изучению фундаментальных концепций с различными примерами по созданию параметризованных конвейеров данных в фабрике данных Azure. Параметризация и динамические выражения являются значительными дополнениями к ADF, так как они могут значительно сэкономить время и обеспечить гораздо более гибкое решение для ETL (извлечение, преобразование и загрузка) или ELT (извлечение, загрузка, преобразование), что значительно сократит затраты на обслуживание решения и ускорит внедрение новых функций в существующие конвейеры. Эти преимущества обусловлены тем, что параметризация уменьшает количество конкретных значений переменных и увеличивает объем повторно используемых объектов и процессов.
Если вы не знакомы с использованием параметров в пользовательском интерфейсе 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. Возвращает указанное значение на основе результата. |
меньше | Проверяет, является ли первое значение меньшим, чем второе. |
меньшеИлиРавно | Проверяет, является ли первое значение меньшим, чем второе, или равным ему. |
не | Проверьте, является ли выражение ложным. |
или | Проверяет, является ли хотя бы одно выражение истинным. |
Эти функции используются для преобразования между собственными типами языка:
Функция преобразования | Задача |
---|---|
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 описано, как передавать параметры между конвейером и активностью, а также между активностями.
Следуйте статье Сопоставление потока данных с параметрами для полного примера использования параметров в потоке данных.
Используйте конвейер с параметрами, управляемый метаданными, чтобы узнать больше об использовании параметров для проектирования конвейеров, управляемых метаданными. Это популярный вариант использования параметров.
Список системных переменных, которые можно использовать в выражениях, см. в статье System variables supported by Azure Data Factory (Системные переменные, поддерживаемые фабрикой данных Azure).
Обучение
Модуль
Оркестрация перемещения и преобразования данных в фабрике данных Azure - Training
Оркестрация перемещения и преобразования данных в Фабрике данных Azure или Azure Synapse Pipeline