将 parquet 文件加载到 redshift 时如何格式化时间戳字段?

问题描述 投票:0回答:2

我有一堆带有不同格式的时间戳字段的镶木地板文件。我想在将数据加载到红移表时统一格式。但下面的语法不起作用,它会抛出错误

TIMEFORMAT argument is not supported for PARQUET based COPY

有什么解决办法吗?我只能想到一种解决方案,即在创建 parquet 文件时统一所有时间戳格式。由于我必须加载 2-3 年的 parquet 文件,因此该解决方案非常耗时。如果您有任何其他解决方案或以下语法中缺少任何内容,有人可以告诉我吗

语法:

COPY redshift_table_name
FROM 's3://path/to/files'
IAM_ROLE '*****'
TIMEFORMAT AS 'YYYY-MM-DDTHH:MI:SS'
FORMAT AS PARQUET
amazon-web-services amazon-s3 amazon-redshift parquet
2个回答
2
投票

如果您可以使用 Pyarrow 库,请加载 Parquet 表,然后使用 use_deprecated_int96_timestamps 参数

以 Parquet 格式将它们写回。 Redshift 将正确识别这些。在加载 Parquet 时,我没有运气让它正确识别任何其他时间戳格式。


0
投票
当我们使用 Parquet 时,唯一可接受的时间戳格式(直到今天)是 unix_timestamp (Bingint 秒数例如:

1608572074000 和 NOT 2020-12-21 17:34:34+00

架构/元数据,使用 TimestampType

© www.soinside.com 2019 - 2024. All rights reserved.