Фабрика данных Azure: как предотвратить выполнение потока данных, если в результате действия копирования в фабрике данных Azure не найден файл?

У меня есть конвейер Фабрики данных Azure, структурированный следующим образом:

  1. Действие копирования: ищет файл на SFTP-сервере, используя определенный подстановочный знак и метку времени, и перемещает его в хранилище BLOB-объектов.
  2. Поток данных: в случае успеха копирования извлекает файл из хранилища BLOB-объектов, сравнивает его содержимое с таблицей SQL и копирует несовпадающие строки в таблицу SQL.

Проблема в том, что даже если на SFTP-сервере нет соответствующего файла, конвейер все равно запускает поток данных.

Как настроить действие копирования, чтобы предотвратить выполнение потока данных, если файл не найден и не перемещен в хранилище BLOB-объектов?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это может быть «альтернативное» решение: проверить существование файла перед запуском потока данных с помощью действия Получить метаданные?

Общий поток

Поток будет выглядеть следующим образом:

Набор данных

Наличие набора данных с каким-либо параметром (в моем случае ADLS Gen2 Parquet, но это может быть что угодно) позволяет вам динамически заполнять имя файла.

Параметры

Связь

Таким образом, вы можете динамически заполнять имя файла.

Активность метаданных

Конфигурация действия получения метаданных будет довольно простой:

Вы можете добавлять переменные по своему желанию, чтобы динамически заполнять имя файла/путь.

Если условие

Поток данных будет запущен в зависимости от существования файла с этим выражением @activity('Get Metadata1').output.exists

Редактировать 1

Следующий запрос: имя динамически созданного файла.

Допустим, мы хотим динамически установить свойство имени файла набора данных. Нажмите «Добавить динамический контент».

Использование переменной

Допустим, мы хотим динамически установить имя выходного файла, полученного по sftp.

1. Добавьте переменную

Добавьте переменную в конвейер

2. Добавьте набор переменных активности.

напишите свое динамичное выражение

3. Используйте переменную

Используйте значение переменной в параметре набора данных.

Обновленный поток

Спасибо, Гам! Можно ли в действии GetMetadata получить динамический доступ к имени файла вместо его жесткого кодирования?

redwolf_cr7 30.05.2024 17:14

Да, конечно, имя файла может быть динамическим. Вы можете: 1. Использовать выходные данные другого действия (например, данные действия копирования). 2. Динамически создавать переменную. Основная «хитрость» заключается в создании набора данных с параметрами. Я приведу вам пример

Gam 30.05.2024 17:28

Привет, Гам! Почему вы жестко кодируете имя файла «test.parquet»? С моей точки зрения, я хочу, чтобы этот процесс был следующим: 1. Скопируйте действие, чтобы взять CSV-файл из SFTP и переместить его в контейнер хранилища; 2. Получите имя перемещенного файла, а также размер или количество строк в файле; 3. Если количество строк > 0, то 4. выполнить поток данных. Я немного сбит с толку вашим потоком. не могли бы вы уточнить?

redwolf_cr7 07.06.2024 16:01

test.parquet — это просто значение по умолчанию. Действующее имя файла должно быть установлено с помощью действия set переменной. Там вы можете написать выражение, чтобы указать имя файла по своему усмотрению.

Gam 07.06.2024 17:43

Другие вопросы по теме

Фабрика данных Azure: как использовать Exists, когда источник (Blob - CSV) и цель (БД SQL) представляют собой массивные наборы данных (различные типы данных ~ 370 столбцов, ~ 7 миллионов строк)
Как создать массив concat внутри переменной для вывода активности поиска, повторяемый в цикле foreach
Microsoft Fabric — только Upsert ETL (игнорировать удаления)
Управление затратами Azure: отслеживайте затраты, связанные с заданием Databricks
Копирование файлов на основе имени файла подстановочного знака; из SFTP в хранилище BLOB-объектов — Фабрика данных Azure — Действие копирования
Как скопировать все контейнеры исходной учетной записи хранения в целевую учетную запись хранения в виде папок в контейнере?
ADF CopyActivity рекурсивно распаковывает архив, но в этом нет необходимости
Есть ли способ использовать альтернативу производного и приведения вариантов в действии копирования?
Конвейер Azure DevOps Невозможно работать с шаблоном yaml развертывания шаблона ARM для конвейера сборки фабрики данных Azure
Невозможно авторизовать приложение AzureDevOps в фабрике данных Azure

Похожие вопросы

Поддерживает ли интерпретатор кода в Azure Open AI арабский язык из файлов?
Обновление .NET 8 ISOLATED прекратило регистрацию информации, отладки
MSAL AcquireTokenInteractive перенаправляет браузер на недоступный локальный хост
Azure IoTEdge — пользовательский модуль IoTEdge не может подключиться к концентратору с ошибкой Communication_Error
Azure Synapse «Содержимое каталога по пути '.../_delta_log/*.*' невозможно отобразить
Развертывание приложения логики (стандартное) через конвейер DevOps — служба kudu недоступна 503
New-AzAutomationSchedule — ссылка на объект не установлена ​​на экземпляр объекта
Аутентификация в Azure с использованием управляемого удостоверения с помощью Terraform
В моем интерфейсе Az Cli для развертывания бицепса в области управления не отображаются изменения во вложенной группе управления
Скрипт Powershell, предназначенный для получения электронных писем всех пользователей и электронных писем менеджеров, принадлежащих к определенной группе безопасности в AD, создает пустой CSV-файл