0

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

timestamp_ntz 列中的这些Invalid date值具有以下特性:

  • 它们不是 NULL
  • 它们似乎被认为总是大于任何其他时间戳,并且此属性可用于过滤它们,例如。WHERE strange_timestamp_col > current_timestamp()
  • 它们不是“前端”的东西,即。在雪花用户界面中 - 他们使用雪花中的数据破坏其他客户端

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

4

1 回答 1

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

于 2021-09-22T20:33:20.147 回答