使用日期时间类型(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';
关于如何将空值加载/同步到外部表日期时间类型的任何想法?
答案 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参数可能应该按预期为您处理。