Фабрика данных Azure версии 2 Копирование действий в хранилище данных из хранилища BLOB-объектов

Я использую ADF v2 для импорта данных из источника CSV в хранилище BLOB-объектов в хранилище данных SQL Azure. Моим первым действием в конвейере является копирование активности из CSV (в хранилище горячих двоичных объектов) в Azure SQL DWH. Если это действие завершится успешно, следующим будет снова Копировать действие, но теперь из CSV (в хранилище горячих двоичных объектов) в CSV (в прохладном хранилище больших двоичных объектов), переместить процесс для истории и оптимизации цен на хранилище. Имя файла CSV отправляется в конвейер как параметр конвейера.

Я заметил, что если я запускаю конвейер с параметром имени файла csv, которого нет в хранилище больших двоичных объектов, первое действие копирования (CSV -> DWH) завершается без ошибок. Он не импортирует данные в DWH, что нормально, но не вызывает ошибки отсутствия файла. Действие следующего копирования (горячее хранилище CSV -> холодное хранилище CSV) вызывает ошибку Failed -> blob отсутствует.

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

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

Кто-нибудь знает, как установить для этого действия копирования (Storage CSV -> SQL DWH) значение Fail, если исходный большой двоичный объект не существует?

Спасибо


person Darko    schedule 26.06.2018    source источник
comment
Привет Дарко. Возможно, какое-то решение может заключаться в использовании активности adf getmetadata, а затем проверять условие if, если этот файл существует, если существует, вы продолжаете свой процесс. Для ведения журнала у меня также есть аналогичные сценарии, в которых я хочу регистрировать ошибки / информацию, но на данный момент не пришел к идеальному решению. Кроме того, я не думаю, что они будут углубляться в какие-то логические вещи с ADF, в моем разговоре с парнем из Microsoft, он сказал мне, и я цитирую: и общая идея заключается в том, что ADF является механизмом оркестровки, а не выполняет большую работу сам .   -  person DraganB    schedule 27.06.2018
comment
Привет Драган. Спасибо за ваш ответ. Ваши решения выглядят нормально, я попытаюсь использовать действие условия If, чтобы решить эту проблему. Могу ли я указать с действия If на существующие действия в конвейере? Спасибо   -  person Darko    schedule 28.06.2018


Ответы (1)


да. Вы можете поместить любое количество действий в свое действие if. Таким образом, вы можете получить подробную информацию о хранилище BLOB-объектов с помощью действия getMetadata (проверьте свойство exists в документации, ссылка ниже).

https://docs.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-activity

person DraganB    schedule 28.06.2018