我在Snowflake上的表包含一个创建为INT
的字段,并且默认为NUMBER(38,0)
作为Snowflake数据类型。
当我使用COPY命令以拼花格式将此表卸载到s3时,我希望保留整个架构,包括该字段的精度。但是,生成的拼花地板具有INT32 Decimal(precision=9, scale=0)
。
在Snowflake文档中,提到了
/ *要在输出文件中保留表模式,请使用简单的SELECT语句(例如SELECT * FROM city)。 * /
但是,我在下面的查询并没有保持精度不变。
COPY INTO @staging.dl_stage/prediction/vehicle/export_date=20200226/file
FROM (
SELECT * FROM snd_staging.PREDICTION.vehicle
)
FILE_FORMAT=(type='parquet' COMPRESSION = AUTO)
HEADER = TRUE
OVERWRITE = TRUE
SINGLE = False
MAX_FILE_SIZE=256000000;
是否可以强制保持Snowflake数据类型的精度不变?
最佳答案
我最终通过运行以下命令解决了这个问题:
alter session set ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION = false;