You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake卸载Parquet到S3时Epoch时间戳显示负值求助

问题分析与解决办法
  • 问题根源:你将Epoch微秒值1665136431585000强制转换为INT类型,但Snowflake的INT是32位有符号整数,最大值仅为2147483647,目标数值远超出这个上限,触发整数溢出,最终在Parquet文件中显示为负数。
  • 解决办法:将类型转换从:: INT改为:: BIGINT,64位的BIGINT可以容纳该量级的Epoch微秒值。

修改后的SQL语句如下:

alter session set ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION = false; 

copy into@PUBLIC.STAGE_mystage/ABC/abc.parquet from ( 
  (date_part(EPOCH_MICROSECONDS ,transactiontimestamp)) :: BIGINT as transactiontimestamp
from mydb.public.mytable
)
FILE_FORMAT = (TYPE = PARQUET COMPRESSION = None) 
header = true
overwrite = true
SINGLE = TRUE ;

额外提示:如果不需要手动存储Epoch数值,也可以直接保留transactiontimestamp的原始时间类型卸载,Parquet会自动将其映射为合适的时间类型,避免溢出问题。

内容的提问来源于stack exchange,提问作者SadanandM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:10:28