gpt4 book ai didi

database - Snowflake 在 TIMESTAMP_NTZ 列中显示 'Invalid date'

转载 作者:行者123 更新时间:2023-12-05 03:37:28 27 4
gpt4 key购买 nike

在我们的 Snowflake 数据仓库实例中,当使用 COPY INTO DDL 语句将数据从一个阶段加载到表中时,timestamp_ntz 列中的某些记录显示值 无效日期 在 Snowflake UI 中。

timestamp_ntz 列中的这些无效日期 值具有以下特性:

  • 它们不为空
  • 它们似乎总是被认为大于当前时间戳,这个属性可以用来过滤它们,例如。 WHERE strange_timestamp_col > current_timestamp()
  • 它们不是“在前端”的东西,即。在 Snowflake UI 中 - 他们使用 Snowflake 中的数据破坏了其他客户端

当尝试执行 COPY INTO DDL 语句时,我们希望无效的数据格式返回错误;而是插入了这些具有奇怪属性的邪恶伪时间戳。

最佳答案

我们发现我们暂存的 parquet 文件中的一些 unix 时间戳值被格式化为整数,一些被格式化为字符串!

解决方案是始终将列转换为 VARCHAR,然后再转换为 TIMESTAMP_NTZ。

使用 unix 时间戳的示例:

SELECT 1620502461213752::timestamp_ntz; -> 无效日期

SELECT 1620502461213752::varchar::timestamp_ntz; -> 2021-05-08 19:34:21.213

SELECT '1620502461213752'::timestamp_ntz; -> 2021-05-08 19:34:21.213

这似乎是因为 timestamp_ntz 只接受以毫秒为单位的整数纪元时间戳(例如 1620502461213)。

但是,当首先将整数转换为 varchar 时,timestamp_ntz 会正确解释以微秒为单位的纪元时间戳(例如 1620502461213752)。这可能也适用于以纳秒为单位的时间戳,尽管我没有确认这种情况。

看来 Invalid date 是一个奇怪的 future 时间戳前端问题,由错误识别纪元时间戳单位造成。

关于database - Snowflake 在 TIMESTAMP_NTZ 列中显示 'Invalid date',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69290953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com