У меня есть конвейер, работающий в моем ADF, где я беру поля из файла json и сохраняю их в нескольких таблицах в моей базе данных. Конвейер запускается, когда файл загружается в контейнер в моей учетной записи хранения, и после запуска файлы удаляются. Проблема в том, что когда конвейер по какой-либо причине выходит из строя, файлы не удаляются (потому что они не доходят до конца прогона), и по какой-то причине записи SQL все еще сохраняются в некоторых таблицах. что означает, что мои таблицы забиты данными. Есть ли способ загрузить данные только в случае успеха конвейера?
Я не видел ни одного варианта, позволяющего мне это сделать, и мне приходится вручную решать проблему, когда это происходит.
Обычно, когда мы запускаем одно действие из другого, мы используем маршрут успеха. Вы также можете использовать блок catch в случае сбоя действия для выполнения какого-либо другого действия. Обратитесь к этой документации.
Поэтому, если сбои происходят в определенном действии, используйте этот метод для выполнения другого действия, которое очистит ваши записи SQL.
Добавляя к ответу @Anupam Chand,
Нет прямого способа откатить или удалить записи из таблицы SQL, которые были вставлены в текущий запуск конвейера. У вас должно быть некоторое поле столбца флага или водяного знака в таблице SQL, чтобы идентифицировать записи, которые были вставлены в текущем прогоне. При сбое действий конвейера можно добавить логику удаления записей в пути сбоя. Я попытался воспроизвести это. Ниже подход.
Delete from tgt_table where Inserted_Datetime >='@{variables('initial_time')}'
Таким образом, мы можем откатить записи, которые были частично загружены во время сбоя конвейера.