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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, а затем вручную перенести их в рабочую таблицу, если вы хотите поступить таким образом. Гораздо проще, чем иметь дело с самими файлами.

Спасибо за вашу помощь. Когда вы говорите «интеграция уведомлений по электронной почте, подобная той, которую вы уже используете», вы имеете в виду интеграцию ошибок с SNS или интеграцию уведомлений с SYSTEM$SEND_EMAIL, которая не использует SNS? На данный момент я использую интеграцию ошибок с SNS и настраиваю это на уровне задачи (где вы указываете параметр «интеграция ошибок»).

Estrobelai 18.06.2024 21:32

Извините, я имел в виду интеграцию уведомлений, но действием предупреждения может быть любая функция, поэтому вы можете создать любую внешнюю функцию и использовать ее для отправки сообщения в любую конечную точку.

Mike Walton 19.06.2024 03:33

Понял, спасибо за помощь, Майк.

Estrobelai 24.06.2024 21:24

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