雪花在 TIMESTAMP_NTZ 列中显示“无效日期”
Posted
技术标签:
【中文标题】雪花在 TIMESTAMP_NTZ 列中显示“无效日期”【英文标题】:Snowflake shows 'Invalid date' in TIMESTAMP_NTZ column 【发布时间】:2021-09-22 20:33:20 【问题描述】:在我们的 Snowflake 数据仓库实例中,当使用 COPY INTO
DDL 语句将数据从阶段加载到表中时,timestamp_ntz 列中的一些记录在 Snowflake UI 中显示值 Invalid date
。
timestamp_ntz 列中的这些Invalid date
值具有以下特性:
WHERE strange_timestamp_col > current_timestamp()
它们不是“前端”的东西,即。在 Snowflake UI 中 - 他们使用 Snowflake 中的数据破坏其他客户端
在尝试执行COPY INTO
DDL 语句时,我们预计无效的数据格式会返回错误;而是插入了这些具有奇怪属性的邪恶伪时间戳。
【问题讨论】:
【参考方案1】:我们发现分阶段 parquet 文件中的一些 unix 时间戳值被格式化为整数和字符串!
解决方案是始终将该列转换为 VARCHAR,然后再转换为 TIMESTAMP_NTZ。
使用 unix 时间戳的示例:
SELECT 1620502461213752::timestamp_ntz;
-> Invalid date
SELECT 1620502461213752::varchar::timestamp_ntz;
-> 2021-05-08 19:34:21.213
SELECT '1620502461213752'::timestamp_ntz;
-> 2021-05-08 19:34:21.213
【讨论】:
只是澄清一下,您是说文件导入正常,但是当您查看最终表格中的数据时,它显示“日期无效”?这听起来不太可靠! 我完全同意;这是一个非常不可靠的体验。我们预计无效数据格式在尝试COPY INTO
DDL 时会引发错误。不幸的是,这并没有发生,我们在 timestamp_ntz 列中遇到了这些奇怪的 Invalid date
值。以上是关于雪花在 TIMESTAMP_NTZ 列中显示“无效日期”的主要内容,如果未能解决你的问题,请参考以下文章
Oracle数据库时间戳(6)转换为雪花timestamp_ntz时抛出错误
Snowflake SQL 错误 - 函数“-”的参数类型无效:(TIMESTAMP_NTZ(9), TIMESTAMP_NTZ(9))
使用“?::TIMESTAMP_NTZ”在查询中指定类型时,Snowflake JDBC 批量插入失败并显示“绑定变量?未设置”