由于数据中的“雪花问题”导致部分加载

Posted

技术标签:

【中文标题】由于数据中的“雪花问题”导致部分加载【英文标题】:Partial Loading Due to " in data - Snowflake Issue 【发布时间】:2020-07-29 14:44:47 【问题描述】:

我无法找到任何描述我遇到的这个问题的信息,但我相信很多人都遇到过这个问题。它可能就像在加载数据之前强制在 Python 中进行预处理一样简单。

我正在尝试将数据从 S3 加载到雪花表中。我看到如下错误:

无法识别数值“” 无法识别时间戳“”

在表定义中,这些列被设置为 DEFAULT NULL,所以如果这里有 NULL 值它应该能够处理它们。我在 Python 中打开了文件以检查这些列,并且确实有些行(在 Snowflake 中引发错误的确切数字)是 NaN。

有没有办法在 Snowflake 中纠正这个问题?

【问题讨论】:

【参考方案1】:

您很有可能需要在 COPY INTO 语句中添加一些内容以使其正确执行。在您的格式选项中尝试此参数:

NULL_IF = ('NaN')

如果您有多个 NaN 值(例如“NULL”的实际字符串),那么您可以将它们添加到上面 () 中的列表中。

【讨论】:

迈克我很欣赏这个答案的方向。我应该稍微推迟一下,因为我最终找到了我将添加作为该线程答案的解决方案。简而言之,NULL_IF 更改需要在 FILE FORMAT 配置中进行。【参考方案2】:

如果您在将数据加载到表(来自任何来源)时遇到问题,并且遇到与上述问题类似的问题,例如错误告诉您*datatype* '' is not recognized,那么您需要按照以下说明操作:

通过“数据库”选项卡进入您正在使用的FILE_FORMAT 选择FILE_FORMAT并点击工具栏中的编辑 点击左下角出现的Show SQL,复制语句 将语句粘贴到工作表中并更改NULL_IF 语句,如下所示 NULL_IF = ('\\N','');

默认情况下,Snowflake 似乎无法识别完全空的值,因此您需要将其添加为选项!

【讨论】:

以上是关于由于数据中的“雪花问题”导致部分加载的主要内容,如果未能解决你的问题,请参考以下文章

如何在雪花中将时间戳转换为日期

预计将解析从 S3 加载的雪花数据中的列时到达记录末尾

如何截断和加载表中的部分数据?

使用 talend 将数据从 as400 加载到雪花时数据发生变化

如何检查从 aws S3 到雪花的数据加载结果

历史数据加载的雪花任务,时间限制