将 Snowflake table 卸载到 parquet 中的 s3 时保留模式

Retaining schema when unloading Snowflake table to s3 in parquet

我在 Snowflake 上的 table 包含一个创建为 INT 的字段,默认为 NUMBER(38,0) 作为 Snowflake 数据类型。

当我使用 COPY 命令以 parquet 格式将此 table 卸载到 s3 时,我希望保留整个模式,包括该字段的精度。但是,生成的镶木地板具有 INT32 Decimal(precision=9, scale=0).

在 Snowflake 文档中,提到

/* To retain the table schema in the output file, use a simple SELECT statement (e.g. SELECT * FROM cities). */

但是,我下面的查询并没有保持精度不变。

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;