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

У меня есть конвейер, работающий в моем ADF, где я беру поля из файла json и сохраняю их в нескольких таблицах в моей базе данных. Конвейер запускается, когда файл загружается в контейнер в моей учетной записи хранения, и после запуска файлы удаляются. Проблема в том, что когда конвейер по какой-либо причине выходит из строя, файлы не удаляются (потому что они не доходят до конца прогона), и по какой-то причине записи SQL все еще сохраняются в некоторых таблицах. что означает, что мои таблицы забиты данными. Есть ли способ загрузить данные только в случае успеха конвейера?

Я не видел ни одного варианта, позволяющего мне это сделать, и мне приходится вручную решать проблему, когда это происходит.

Как установить 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
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Обычно, когда мы запускаем одно действие из другого, мы используем маршрут успеха. Вы также можете использовать блок catch в случае сбоя действия для выполнения какого-либо другого действия. Обратитесь к этой документации.

Поэтому, если сбои происходят в определенном действии, используйте этот метод для выполнения другого действия, которое очистит ваши записи SQL.

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

Добавляя к ответу @Anupam Chand,

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

  • Первоначально берется переменная строкового типа, и она устанавливается с помощью действия set variable, чтобы получить время начала выполнения конвейера.

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

  • Если это действие завершается сбоем, действие сценария добавляется к пути сбоя действия копирования.

  • Затем добавляется активность скрипта для удаления записей. Запрос дается как
Delete from tgt_table where Inserted_Datetime >='@{variables('initial_time')}'

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

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