-1

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

4

1 回答 1

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 ...
于 2019-12-16T20:47:44.370 回答