Azure Data Factory использует результат поиска в имени файла DataSink - PullRequest
0 голосов
/ 05 июня 2018

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

select MONTH(regtime) as FirstMonth , YEAR(RegTime) as Year from MyTable where ID = (select MIN(id) from MyTable)

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

select * from MyTable where MONTH(RegTime) = '@{activity('LookupFirstMonth').output.firstRow.FirstMonth}' and YEAR(RegTime) = '@{activity('LookupFirstMonth').output.firstRow.Year}'

Следующим шагом должно быть копирование строк в озеро данных.В области Sink действия копирования можно динамически установить имя файла для файла, в который помещаются данные.Но я не могу понять, как это сделать, я этого хочу.Я хочу, чтобы имя файла отображало месяц и год, выбранные в операции поиска.

Я могу установить имя файла в Мойке на @{activity('LookupFirstMonth').output.firstRow.MONTH}, и тогда именем файла будет номер месяца.Но этого недостаточно.У этого также должен быть ГОД в имени файла.Когда я приконфигурирую имя файла как:

@CONCAT(@{activity('LookupFirstMonth').output.firstRow.FirstMonth}, @{activity('LookupFirstMonth').output.firstRow.Year}, '.txt')

, я получаю сообщение об ошибке:

 {"code":"BadRequest","message":"The expression 'CONCAT(@{activity('LookupFirstMonth').output.firstRow.FirstMonth}, @{activity('LookupFirstMonth').output.firstRow.Year}, '.txt')' is not valid: the string character '@' at position '7' is not expected.\"","target":"pipeline/pipeline1/runid/3cf0a5a9-01df-494e-bdaf-dfc66f406a83"}

Так, как я могу использовать результат действия поиска в имени файла для Мойки вкопирование

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Правильное выражение должно быть

@ CONCAT (активность ('LookupFirstMonth'). Output.firstRow.FirstMonth, активность ('LookupFirstMonth'). Output.firstRow.Year, '.txt')

Или

@ {CONCAT (активность ('LookupFirstMonth'). Output.firstRow.FirstMonth, активность ('LookupFirstMonth'). Output.firstRow.Year, '.txt')}

Первое является чистым выражением, а второе - интерполяцией строк (с {})

0 голосов
/ 05 июня 2018

Обычно, если вы начинаете выражение с @concat, все, что находится в функции concat, не может начинаться с @.попробуйте это:

@CONCAT({activity('LookupFirstMonth').output.firstRow.FirstMonth}, {activity('LookupFirstMonth').output.firstRow.Year}, '.txt')

пример из документации msdn:

"@concat('Answer is: ', string(pipeline().parameters.myNumber))"

так что перед конвейером () нет @.

...