Параметры фабрики данных в Microsoft Fabric
В этом документе описывается использование параметров в конвейерах фабрики данных в Fabric.
Использование параметров, выражений и функций в конвейерах фабрики данных в Fabric
В этом документе мы сосредоточимся на обучении фундаментальных концепций с различными примерами для изучения возможности создания параметризованных конвейеров данных в Фабрике данных в Fabric. Параметризация и динамические выражения могут сэкономить огромное время и обеспечить гораздо более гибкое решение Extract, Transform, Load (ETL) или Extract, Load, Transform (ELT), что значительно сократит затраты на обслуживание решения и ускорить реализацию новых функций в существующих конвейерах. Эти преимущества обусловлены тем, что параметризация уменьшает количество конкретных значений переменных и увеличивает объем повторно используемых объектов и процессов.
Основные понятия параметров и выражений
Параметры можно использовать для передачи внешних значений в конвейеры. Переданный в ресурс параметр потом изменить не получится. Параметризация ресурсов позволяет повторно их использовать каждый раз с разными значениями. Параметры можно использовать по отдельности или в составе выражений. Значения параметров в определении могут быть литеральными или выражениями, которые вычисляются во время выполнения.
Выражения могут отображаться в любом месте строкового значения и всегда создавать другое строковое значение. Здесь password — это параметр конвейера в выражении. Если значение параметра является выражением, текст выражения извлекается путем удаления объекта at-sign (@). Если требуется строковый литерал, начинающийся с @, его необходимо экранировать с помощью @@. В примерах ниже показано, как вычисляются выражения.
Значение параметра | Результат |
---|---|
"parameters" | Возвращаются символы в виде 'parameters'. |
"parameters[1]" | Возвращаются символы в виде 'parameters[1]'. |
"@@" | Возвращается строка из 1 символа, содержащая символ \@\. |
" @" | Возвращается строка из 2 символов, содержащая символ \@\. |
Выражения также могут содержаться внутри строк, где они заключаются в структуру @{ ... }
, при использовании интерполяции строк. Например, следующая строка включает значения параметров и литеральные строковые значения:
"Имя: @{pipeline().parameters.firstName} Фамилия: @{pipeline().parameters.lastName}"
При использовании интерполяции строки результатом всегда будет строка. Например, если вы определили myNumber
как 42
и myString
как foo
:
Значение параметра | Результат |
---|---|
"@pipeline().parameters.myString" | Возвращает foo как строку. |
@{pipeline().parameters.myString} | Возвращает foo как строку. |
"@pipeline().parameters.myNumber" | Возвращает 42 как номер. |
@{pipeline().parameters.myString} | Возвращает 42 как строку. |
"Answer is: @{pipeline().parameters.myNumber}" | Возвращает строку Answer is: 42 . |
"@concat('Answer is: ', string(pipeline().parameters.myNumber))" | Возвращает строку Answer is: 42 . |
Answer is: @{pipeline().parameters.myNumber} | Возвращает строку Answer is: @{pipeline().parameters.myNumber} . |
Примеры использования параметров в выражениях
Создание и использование параметров
Чтобы создать параметры, выберите фон холста редактора конвейера, а затем вкладку "Параметры " окна свойств внизу. Нажмите кнопку +Создать, чтобы добавить новый параметр в конвейер, присвойте ему имя, тип данных и значение по умолчанию:
Затем можно использовать параметр в любом месте конвейера, где поддерживается динамическое содержимое. В этом примере параметр используется для динамического предоставления имени хранилища данных Lakehouse на вкладке "Источник " страниц свойств действия копирования.
Откроется окно "Добавление динамического содержимого", позволяющее указать любое динамическое содержимое, включая параметры, системные переменные, функции или переменные конвейера. В этом примере выбран ранее определенный параметр, а окно динамического содержимого автоматически заполняется правильным выражением для ссылки на параметр.
Пример сложных выражений
Приведенный ниже пример содержит сложное выражение, которое ссылается на глубоко вложенное поле в выходных данных действия. Чтобы создать ссылку на параметр конвейера, который вычисляет вложенное поле, используйте синтаксис [] вместо оператора точки (.) (как subfield1 и subfield2 в нашем примере).
@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*
Редактор динамического содержимого
Редактор динамического содержимого автоматически экранирует символы в содержимом после завершения редактирования. Например, следующее содержимое в редакторе контента представляет собой интерполяцию строк с функцией выражения:
@{toUpper('myData')}
Редактор динамического содержимого преобразует приведенное выше содержимое в следующее выражение:
MYDATA
Использование функций и переменных в выражениях
Можно вызывать функции и использовать переменные в выражениях. В следующих разделах предоставлены сведения о функциях, которые могут использоваться в выражении.
Переменные область конвейера
Ссылки на эти системные переменные можно добавлять в любой части JSON конвейера.
Имя переменной | Description |
---|---|
@pipeline().DataFactory | Имя данных или рабочая область Synapse, в которой выполняется конвейер. |
@pipeline().Pipeline | Имя конвейера |
@pipeline().RunId | ИД определенного запуска конвейера |
@pipeline().TriggerId | Идентификатор триггера, который вызвал конвейер. |
@pipeline().TriggerName | Имя триггера, который вызвал конвейер. |
@pipeline().TriggerTime | Время выполнения триггера, который вызвал конвейер. Это время, когда триггер реально срабатывает для вызова выполнения конвейера и может немного отличаться от запланированного времени срабатывания. |
@pipeline().GroupId | Идентификатор группы, к которой принадлежит выполнение конвейера. |
@pipeline()?.TriggeredByPipelineName | Имя конвейера, активирующее выполнение конвейера. Применяется, когда выполнение конвейера активируется действием ExecutePipeline. При использовании в других обстоятельствах будет иметь значение NULL. Обратите внимание на вопросительный знак после @pipeline() |
@pipeline()?.TriggeredByPipelineRunId | Идентификатор выполнения конвейера, активирующий выполнение конвейера. Применяется, когда выполнение конвейера активируется действием ExecutePipeline. При использовании в других обстоятельствах будет иметь значение NULL. Обратите внимание на вопросительный знак после @pipeline() |
Примечание.
Системные переменные даты и времени, связанные с триггерами (в областях конвейера и триггера), возвращают даты по Гринвичу в формате ISO 8601, например 2017-06-01T22:20:00.4061448Z
.
Строковые функции
Для работы со строками вы можете использовать эти строковые функции, а также некоторые функции для коллекций. Строковые функции работают только со строками.
Строковая функция | Задача |
---|---|
concat | Объединяет две или более строк и возвращает объединенную строку. |
endsWith | Проверяет, заканчивается ли строка определенной подстрокой. |
guid | Создает глобально уникальный идентификатор (GUID) в виде строки. |
indexOf | Возвращает начальную позицию подстроки. |
lastIndexOf | Возвращает начальную позицию последнего вхождения подстроки. |
replace | Заменяет подстроку указанной строкой и возвращает обновленную строку. |
split | Возвращает массив, содержащий подстроки, разделенные запятыми, из большей строки, основываясь на указанном символе разделителя в исходной строке. |
startsWith | Проверяет, начинается ли строка с определенной подстроки. |
substring | Возвращает символы из строки, начиная с указанной позиции. |
toLower | Возвращает строку символов в нижнем регистре. |
toUpper | Возвращает строку символов в верхнем регистре. |
trim | Удаляет все начальные и конечные пробелы и возвращает обновленную строку. |
Функции сбора
Для работы с коллекциями, обычно массивами, строками, а иногда и словарями, вы можете использовать следующие функции.
Функция для коллекций | Задача |
---|---|
contains | Проверяет наличие определенного элемента в коллекции. |
empty | Проверяет, является ли коллекция пустой. |
first | Возвращает первый элемент из коллекции. |
intersection | Возвращает коллекцию, которая содержит только общие элементы в указанных коллекциях. |
join | Возвращает строку, содержащую все элементы из массива, в которой каждый символ отделен разделителем. |
last | Возвращает последний элемент из коллекции. |
length | Возвращает число элементов в строке или массиве. |
skip | Удаляет элементы из начала коллекции и возвращает все другие элементы. |
take | Возвращает элементы, расположенные в начале коллекции. |
union | Возвращает коллекцию, которая содержит все элементы из указанных коллекций. |
Логические функции
Эти функции подходят для условий и могут использоваться для определения логики любого типа.
Функция логического сравнения | Задача |
---|---|
and | Проверяет, истинны ли все выражения. |
equals | Проверяет, эквивалентны ли оба значения. |
greater | Проверяет, является ли первое значение большим, чем второе. |
greaterOrEquals | Проверяет, является ли первое значение большим, чем второе, или равным ему. |
if | Проверьте, какое значение имеет выражение: true или false. Возвращает указанное значение на основе результата. |
less | Проверяет, является ли первое значение меньшим, чем второе. |
lessOrEquals | Проверяет, является ли первое значение меньшим, чем второе, или равным ему. |
не | Проверяет, имеет ли выражение значение false. |
or | Проверяет, является ли хотя бы одно выражение истинным. |
Функции преобразования
Эти функции используются для преобразования между собственными типами языка:
- строка
- integer
- с плавающей запятой
- boolean
- массивы
- dictionaries;
Функция преобразования | Задача |
---|---|
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-адреса, escape-символами. |
float | Возвращает значение с плавающей запятой в качестве входного значения. |
int | Возвращает целочисленную версию строки. |
json | Возвращает значение типа JSON либо объект для строки или XML. |
string | Возвращает строковую версию входного значения. |
uriComponent | Возвращает кодированную версию URI для входного значения, заменив символы, опасные для URL-адреса, на escape-символы. |
uriComponentToBinary | Возвращает двоичную версию строки с закодированным URI. |
uriComponentToString | Возвращает строковую версию строки с закодированным URI. |
xml | Возвращает XML-версию строки. |
xpath | Проверяет XML на наличие узлов или значений, которые соответствуют выражению XPath, и возвращает соответствующие узлы или значения. |
Математические функции
Эти функции могут использоваться для любого типа чисел: целых чисел и чисел с плавающей запятой.
Математическая функция | Задача |
---|---|
добавление | Возвращает результат сложения двух чисел. |
div | Возвращает результат деления двух чисел. |
max | Возвращает наибольшее значение из набора чисел или массива. |
min | Возвращает наименьшее значение из набора чисел или массива. |
mod (модуль) | Возвращает остаток результата деления двух чисел. |
mul | Возвращает результат умножения двух чисел. |
rand | Возвращает случайное целое число из указанного диапазона. |
range | Возвращает массив целых чисел, который начинается с заданного целого числа. |
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 | Возвращает значение свойства ticks для указанной метки времени. |
utcNow | Возвращает текущую метку времени в виде строки. |