在复制命令中使用TO_DATE函数时,雪花验证选项不会返回失败的记录

问题描述

我使用了“复制命令”,如下所示:

从@%test2复制到test2 file_format =(format_name ='CSV')on_error ='CONTINUE';

我的文件的Number字段中包含一些Character数据(用于所有记录),因此复制结果为LOAD_Failed,我可以使用以下查询获取失败记录(在这种情况下,所有记录均为失败记录):

从表中选择*(validate(“ TEST2”,job_id =>'对应的作业ID'));

我还尝试给出了无效的日期,但仍然从上述查询中得到了所有不良记录。

现在,我尝试如下所示的复制命令: 从(从@%test2选择$ 1,to_date($ 2,'YYYYDDD')中复制到test2(test1,test2))file_format =(format_name ='CSV')on_error ='CONTINUE';

复制结果再次为LOAD_Failed,但现在没有从下面的查询中得到任何失败记录: 从表中选择*(validate(“ TEST2”,job_id =>'对应的作业ID'));

功能仅适用于常规复印而在复印中没有任何转换功能吗?还是有其他原因?

在看到以下Mike的回复后,再添加一个示例: 文件数据: 1,2018-1-34 2016/2/3 3,2020124

table->创建表test2(test1号,test2日期)

从(从@%test2选择($ 1,to_date($ 2,'YYYYDD'))复制到test2(test1,test2)中file_format =(format_name ='CSV')on_error ='CONTINUE';

第一条记录和第三条记录在“验证”查询中可用。在这种情况下,仅第二个记录不存在。有点奇怪。 (所有三条记录均无法复制)。

正如Mike在下面的评论中所述,Validate不适用于复制中的转换数据,但是为什么在这种情况下它提供两个记录。它应该完全不提供任何东西吗?

解决方法

根据文档,由于在COPY INTO期间要转换数据,因此VALIDATE函数将不再起作用:

此功能不支持COPY INTO语句 在加载期间转换数据。

https://docs.snowflake.com/en/sql-reference/functions/validate.html#usage-notes