Снежинка — получайте уведомления о любых ошибках задачи, если для копии установлено значение «on_error = continue»

У меня есть задача на Snowflake, которая запускает команду копирования с «on_error = continue», поэтому, если какой-либо файл в моей корзине S3 не удастся скопировать, задание не будет немедленно прервано. Однако я также создал «интеграцию ошибок» для этой задачи с AWS/SNS, поэтому SNS будет отправлять электронные письма всякий раз, когда при выполнении этой задачи возникает ошибка. Проблема здесь в том, что если установить «on_error = continue» для команды копирования, задача в конечном итоге будет выполнена успешно, и электронные письма не будут отправлены, даже если один из файлов в моем S3 не удастся скопировать в таблицу назначения. Есть ли какой-нибудь обходной путь, чтобы задача не прерывалась немедленно, когда один из файлов, которые я пытаюсь скопировать, терпит неудачу, и все равно получаю уведомления о каких-либо ошибках?


54
1

Ответ:

Решено

Я бы порекомендовал вам изучить либо последующую задачу, которая использует функцию VALIDATE() для таблицы, либо запрос _last. Эта функция вернет все записи об ошибках, которые не были загружены как часть исходной функции COPY INTO. Вы можете отправить этот набор результатов по электронной почте в качестве вызова внешней функции... или заставить задачу запустить вызов EXECUTE ALERT, где условие оповещения запрашивает VALIDATE(), а затем действие представляет собой интеграцию уведомлений по электронной почте, подобную той, которую вы уже используете.

Немного легкого чтения, если это не имеет смысла:

https://docs.snowflake.com/en/sql-reference/sql/execute-alert

https://docs.snowflake.com/en/sql-reference/functions/validate

Другой мой совет — зафиксировать выходные данные функции VALIDATE() в таблице. Это позволяет вам исправить записи внутри Snowflake, а затем вручную перенести их в рабочую таблицу, если вы хотите поступить таким образом. Гораздо проще, чем иметь дело с самими файлами.