问题描述
我想使用 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
?
提前致谢
解决方法
我发现 S3 上确实存在重复的文件,它们的名称完全相同,只是在文件名末尾附加了一个空格。我无法在 AWS 控制台中或通过 AWS S3 CLI 轻松看到这一点,但此命令显示了带有 "
的文件名:
aws s3api list-objects --bucket my_bucket