Запрос выражения фабрики данных Azure для операции копирования - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь скопировать данные из хранилища таблиц в другое хранилище таблиц другой учетной записи хранения, для этого я использую операцию копирования в фабрике данных Azure.

Я хочу отфильтровать строки, которые будут скопированы в хранилище таблицы приемников, для этой фабрики данных Azure есть возможность определить запрос. Я хочу применить фильтр к ключу раздела, тип данных которого - String, но содержит числовые значения. Я смотрю на эту документацию: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops там говорится, что преобразование типов неявно для операторов сравнения, таких как "eq", "le", "ge" и т. д.

Так что, если мой запрос "PartitionKey eq 0", он не выполнится и выдаст эту ошибку:

A storage operation failed with the following error 'The remote server returned an error: (400) Bad Request.'.. Activity ID:edf8e608-d25e

Но если я определю свой запрос как "PartitionKey eq '0'", он будет работать.

Я хочу получить строки с определенным диапазоном чисел, для чего мне нужно преобразовать ключ разделения в числовое значение. Как это сделать?

Также «startsWith» и «endsWith» не работают например, этот запрос PartitionKey startsWith '10' выдает ту же ошибку, что и выше.

выглядит так: enter image description here Заранее спасибо.

1 Ответ

0 голосов
/ 11 июля 2019

Во-первых, чтобы убедиться, что ваш запрос работает - вы можете использовать Storage Explorer (превью) в портале Azure для создания запроса в Query Builder режиме:
Query built with Query builder

и затем переключитесь на Текстовый редактор :

enter image description here

Теперь выуверены, что у вас есть правильный запрос .
Давайте применим этот запрос к ADF.Без динамического контента - это будет точно такой же запрос:
enter image description here

Чтобы создать динамический запрос - нам нужно добавить переменные илипараметры для определения границы:
enter image description here

Затем создайте динамическое содержимое в поле запроса, заменив запрос:

PartitionKey ge '0' and PartitionKey le '1'

следующей формойиспользуя функцию concat :

@concat('PartitionKey ge ''0'' and PartitionKey lt ''1''')

Обратите внимание, что я должен заключить в одинарную кавычку ('), добавив лишнюю (' ').
В конце - нам нужно простозамените жестко запрограммированные значения ранее определенными параметрами:

@concat('PartitionKey ge ''',pipeline().parameters.PartitionStart,''' and PartitionKey lt ''',pipeline().parameters.PartitionEnd,'''')

Вот и все.Я надеюсь, что я объясню, как этого добиться, создав динамический контент (запрос) в фабрике данных Azure.

...