雪花更新重复记录

时间:2019-12-16 09:23:56

标签: snowflake-data-warehouse snowflake-schema

我在雪花中放置登台表,在其中使用雪管从AWS S3复制数据。其中一些记录是一种创建事件和多次更新的类型。对于同一事件,将有一个创建事件和多个按时间顺序排列的更新事件。我想将这些记录移动到另一个表中(因此create事件应将一条记录插入表中,并且多个update事件应相应地更新这些记录。)我试图使用“合并”概念雪花,但它不适用于我的用例就好像我的目标表没有记录,它为每次创建和更新创建一个新记录。

1 个答案:

答案 0 :(得分:0)

如果任何更新是原始事件的完整新版本,并且可以完全替代以前的事件,则以下SQL将起作用,因此您实际上只需要应用许多更新中的最后一个。

如果必须依次将所有更新应用于事件以获取正确的结果,则要困难得多。您没有提供任何细节,因此我们可以猜测。

MERGE INTO event_tab old USING (
   SELECT * FROM new_events
   QUALIFY ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY event_ts DESC) = 1
) new ON old.event_id = new.event_id
WHEN MATCHED THEN UPDATE ...
WHEN NOT MATCHED THEN INSERT ...
相关问题