0

我有一个不断获取新文件的 s3 文件夹。这些文件也可能基于 url 列有重复项。

s3file1.csv - lastmodified 2022-03-01 at 10 UTC

url             name

http://a/       jai
http://b/       nitu

s3file2.csv 上次修改时间为 2022 年 3 月 1 日 12 UTC

url              name

http://a/       aron
http://b/       max

我将我的外部表创建为:

create external table  test
(
url VARCHAR as (nullif(value:c1,'')::VARCHAR)
refershed_on TIMESTAMP_LTZ(9)  as CURRENT_TIMESTAMP()
)
with location = @test_stage
file_format = test_format
auto_refersh=true
pattern = '.*s3file[.]csv';

问题是我在基于 url 的表测试中有重复项。所有行的 refreshed_on 日期也相同。如何删除重复项并仅保留具有最新最后修改日期的条目在 url 上唯一?

最终表测试应该只有 s3file2.csv 数据,但它有两个文件数据

4

2 回答 2

0

如果您在外部表中捕获文件名,则可以在该表上添加一个视图,该视图具有仅包含最新记录的窗口函数。但是,每次查询时都会使用外部表,因此性能不会那么好。最好只摄取数据并处理数据,因为它是增量进来的,以相应地更新记录。这听起来不像是在以一种导致良好外部表用例的方式管理基础数据。

于 2022-03-02T13:44:40.407 回答
0

您将需要添加 ETL/ELT 流程来重复数据删除。它是一个外部表,Snowflake 将按原样读取文件。如果有重复,则结果将有重复。

于 2022-03-02T11:17:32.770 回答