У меня есть конвейер Фабрики данных Azure, структурированный следующим образом:
Проблема в том, что даже если на SFTP-сервере нет соответствующего файла, конвейер все равно запускает поток данных.
Как настроить действие копирования, чтобы предотвратить выполнение потока данных, если файл не найден и не перемещен в хранилище BLOB-объектов?


Это может быть «альтернативное» решение: проверить существование файла перед запуском потока данных с помощью действия Получить метаданные?
Поток будет выглядеть следующим образом:
Наличие набора данных с каким-либо параметром (в моем случае ADLS Gen2 Parquet, но это может быть что угодно) позволяет вам динамически заполнять имя файла.
Параметры
Связь
Таким образом, вы можете динамически заполнять имя файла.
Конфигурация действия получения метаданных будет довольно простой:
Вы можете добавлять переменные по своему желанию, чтобы динамически заполнять имя файла/путь.
Поток данных будет запущен в зависимости от существования файла с этим выражением @activity('Get Metadata1').output.exists
Следующий запрос: имя динамически созданного файла.
Допустим, мы хотим динамически установить свойство имени файла набора данных. Нажмите «Добавить динамический контент».
Допустим, мы хотим динамически установить имя выходного файла, полученного по sftp.
1. Добавьте переменную
Добавьте переменную в конвейер
2. Добавьте набор переменных активности.
напишите свое динамичное выражение
3. Используйте переменную
Используйте значение переменной в параметре набора данных.
Обновленный поток
Да, конечно, имя файла может быть динамическим. Вы можете: 1. Использовать выходные данные другого действия (например, данные действия копирования). 2. Динамически создавать переменную. Основная «хитрость» заключается в создании набора данных с параметрами. Я приведу вам пример
Привет, Гам! Почему вы жестко кодируете имя файла «test.parquet»? С моей точки зрения, я хочу, чтобы этот процесс был следующим: 1. Скопируйте действие, чтобы взять CSV-файл из SFTP и переместить его в контейнер хранилища; 2. Получите имя перемещенного файла, а также размер или количество строк в файле; 3. Если количество строк > 0, то 4. выполнить поток данных. Я немного сбит с толку вашим потоком. не могли бы вы уточнить?
test.parquet — это просто значение по умолчанию. Действующее имя файла должно быть установлено с помощью действия set переменной. Там вы можете написать выражение, чтобы указать имя файла по своему усмотрению.
Спасибо, Гам! Можно ли в действии GetMetadata получить динамический доступ к имени файла вместо его жесткого кодирования?