Snowflake外部表无法将变量值NULL强制转换为DATETIME / TIMESTAMP_NTZ类型

时间:2020-04-26 02:12:41

标签: datetime snowflake-cloud-data-platform external-tables

使用日期时间类型(TIMESTAMP_NTZ类型)的列创建一个外部表,该外部阶段具有一个csv文件,该列中的值为空。从外部表中选择 “无法将变体值“ 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;

我还有如下定义的文件格式,它适用于其他列类型(varchar等),这些列对于外部表以及常规表中的日期时间类型都具有空值。因此,基本上不适用于日期时间类型的外部表。

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

关于如何将空值加载/同步到外部表日期时间类型的任何想法?

1 个答案:

答案 0 :(得分:1)

您是否尝试过在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参数可能应该按预期为您处理。