Snowflake External Table 无法将变体值 NULL 转换为 DATETIME/TIMESTAMP_NTZ 类型

Snowflake External Table failed to cast variant value NULL to DATETIME/TIMESTAMP_NTZ type

创建了一个外部 table,其中有一列类型为日期时间(TIMESTAMP_NTZ 类型),外部阶段有一个 csv 文件,该列中的值为空。从外部选择 table 给出 "Failed to cast variant value "null" 到 TIMESTAMP_NTZ"

CREATE OR REPLACE EXTERNAL TABLE ext_table_datetime (
   col1 datetime as (value:c1::datetime)
   )
    with location = 's3://bucket_name'
    file_format = file_format_1
    auto_refresh = true;

我还定义了如下文件格式,它适用于外部 table 具有空值的其他列类型(varchar 等),也适用于常规 table 中的日期时间类型。所以,基本上只是不适用于具有日期时间类型的外部 table。

CREATE OR REPLACE FILE FORMAT file_format_1 type = 'CSV'
                              field_delimiter = ','
                              ESCAPE_UNENCLOSED_FIELD = NONE
                              SKIP_HEADER=1
                              NULL_IF = 'null';

关于如何将 load/sync 空值转换为外部 table 日期时间类型有什么想法吗?

您是否尝试过在 EXTERNAL TABLE 定义中使用 NULLIF 函数:

CREATE OR REPLACE EXTERNAL TABLE ext_table_datetime (
   col1 datetime as (NULLIF(value:c1,'null')::datetime)
   )
    with location = 's3://bucket_name'
    file_format = file_format_1
    auto_refresh = true;

此外,由于这是 Snowflake 的预览功能,我建议您开一张支持票。您的格式文件的 NULL_IF 参数可能会按照您的预期为您处理此问题。