我在 Snowflake 上有一项任务,它运行带有“on_error = continue”的复制命令,这样,如果我尝试复制到表中的 S3 存储桶中的文件失败,复制将不会立即中止。不过,我还为此任务与 AWS / SNS 创建了“错误集成”,因此只要此任务发生错误,SNS 就会发送电子邮件。这里的问题是,通过将“on_error = continue”设置为复制命令,任务最终将成功,并且不会发送任何电子邮件,即使我的 S3 中的文件之一无法复制到目标表中。是否有任何解决方法,以便当我尝试复制的文件之一失败并且仍然收到任何错误通知时任务不会立即中止?
我建议您研究利用
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 内部的记录,然后手动推送到生产表(如果您希望以这种方式处理事情)。 比处理文件本身要容易得多。