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

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


Параметры фабрики данных в 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}.

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

Создание и использование параметров

Чтобы создать параметры, выберите фон холста редактора конвейера, а затем вкладку "Параметры " окна свойств внизу. Нажмите кнопку +Создать, чтобы добавить новый параметр в конвейер, присвойте ему имя, тип данных и значение по умолчанию:

Screenshot showing the Parameters editor on the properties pages for a pipeline.

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

Screenshot showing the Source tab of a copy activity's property pages, highlighting the Add dynamic content option.

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

Screenshot showing the Add dynamic content window with a pipeline parameter selected.

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

Приведенный ниже пример содержит сложное выражение, которое ссылается на глубоко вложенное поле в выходных данных действия. Чтобы создать ссылку на параметр конвейера, который вычисляет вложенное поле, используйте синтаксис [] вместо оператора точки (.) (как 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 Возвращает текущую метку времени в виде строки.