雪花 S3 阶段/外部表和 S3 版本控制重复

时间:2021-02-14 18:36:44

标签: amazon-s3 snowflake-cloud-data-platform external-tables

我想使用 AWS S3 作为外部存储并使用 Snowflake 外部表来查询数据。 为了不丢失/覆盖任何数据,我在 S3 存储桶上启用了 versioning。当文件的多个版本存在时,它们将在 Snowflake 中显示为重复项,我可以找到将它们从外部阶段/外部表中隐藏的选项。

LIST @my_stage; -- shows duplicate files

SELECT $1, $2, $3 FROM @my_stage; -- returns duplicate records

CREATE OR REPLACE EXTERNAL TABLE my_external_table (
    Name STRING AS (value:c1::STRING),
)
with location = @my_stage;
SELECT * FROM my_external_table; -- shows duplicate records

SELECT DISTINCT row1, row2, row3 from my_external_table; -- manually hide duplicates

有没有办法只从文件的最新版本中选择行而不需要使用 DISTINCT? 提前致谢

1 个答案:

答案 0 :(得分:0)

我发现 S3 上确实存在重复的文件,它们的名称完全相同,只是在文件名末尾附加了一个空格。我无法在 AWS 控制台中或通过 AWS S3 CLI 轻松看到这一点,但此命令显示了带有 " 的文件名:

aws s3api list-objects --bucket my_bucket