Azure -data-Factory Копировать данные, если существует определенный файл - PullRequest
0 голосов
/ 17 июня 2020

У меня много файлов в контейнере больших двоичных объектов. Однако я хотел запускать хранимую процедуру только в том случае, если в контейнере больших двоичных объектов существует определенный файл (например, SRManifest.csv). Я использовал Get metadata и IF Condition на фабрике данных. Не могли бы вы помочь мне со скриптом Dynami c для этого. Я пробовал это @bool(startswith( activity('Get Metadata1').output.childitems.ItemName, 'SRManifest.csv')). Это не работает.

Тогда я подумал, что, если бы я использовал @greaterOREquals(activity('Get Metadata1').output.LastModified,adddays(utcnow(),-2)) Но это проверяет последнее изменение в течение 2 дней после Bloob, а файл не существует. Спасибо.

См. Ниже мою диаграмму enter image description here

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Я понял ваше требование по-другому, я думаю.

Я хотел запустить хранимую процедуру, только ЕСЛИ определенный файл (например, SRManifest.csv) существует в контейнере BLOB-объектов

1 Измените действие метаданных, чтобы проверить наличие файла-дозорного (SRManifest.csv)

enter image description here

2 Выполните действие IF, используйте это condition:

enter image description here

3 Поместите sp в истинную часть действия IF

Если вам также нужен список файлов, переданный в sp, то вам понадобится опция GetMetadata с дочерними элементами внутри действия IF-True

1 голос
/ 17 июня 2020

На основе вашей диаграммы, поскольку вы уже перебираете все имена больших двоичных объектов, вы можете добавить логическую переменную в конвейер и установить для нее значение по умолчанию false :

enter image description here

Внутри действия ForEach вы хотите попытаться установить переменную только в том случае, если значение все еще равно false , и если имя большого двоичного объекта найдено, установите его to true . Поскольку Set Variable не может ссылаться на себя, сделайте это внутри False ветви действия If:

enter image description here

Это будет пытаться обработать, только если значение равно false (так что имя файла еще не найдено) и ничего не будет делать, если значение равно true . Теперь установите переменную на основе вашего имени файла:

enter image description here

[ ПРИМЕЧАНИЕ : это значение может быть жестко закодировано, параметризовано или на основе переменной]

Когда вы запускаете конвейер, вы увидите, что Set Variable прекращает попытки, когда значение установлено на true :

enter image description here

В основном конвейере после завершения действия ForEach вы можете использовать переменную для установки условия вашего последнего действия If. Если большой двоичный объект никогда не будет найден, он все равно будет false , поэтому поместите действие хранимой процедуры в ветвь True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...