Snowflake cloud data platform 雪花更新重复记录

Snowflake cloud data platform 雪花更新重复记录,snowflake-cloud-data-platform,snowflake-schema,Snowflake Cloud Data Platform,Snowflake Schema,我有一个雪花中的暂存表,我正在使用snowpipe从AWS S3复制数据。其中一些记录是创建事件和多个更新的一种类型。对于同一事件,将有一个按时间顺序创建的事件和多个按时间顺序更新的事件。我想将这些记录移动到另一个表中(因此create事件应该将一条记录插入一个表中,而multiple updates事件应该相应地更新这些记录)。我尝试使用“合并”概念雪花,但它不适合我的用例,好像我的目标表没有记录一样,它为每次创建和更新创建一个新记录 如果任何更新都是原始事件的全新版本,并且可以完全替换以前的

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

如果任何更新都是原始事件的全新版本,并且可以完全替换以前的版本,那么下面的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 ...

这个问题需要很多澄清。也许可以创建一个表结构、数据和预期结果的示例。这将帮助其他人更好地理解这个问题,并提供可能的解决方案。