在没有 PK 的情况下从 Snowflake 表中删除重复记录

问题描述 投票:0回答:1

我有一个系统,我们每天晚上将数据加载到临时表中,然后使用 MERGE 将其上传到最终表中。 我发现最终表中有重复的记录。我的调试显示用于 JOIN 条件的字段之一为 NULL,因此 MERGE 正在插入记录而不是更新记录。

我需要删除重复记录并且需要知道如何删除。

此表上没有主键,只有映射到平面文件的列,然后是控制列

例如:

FIRST_NAME LAST_NAME 创建_日期
约翰 母鹿 2024 年 1 月 18 日
母鹿 2024 年 1 月 18 日
菲尔 骑士 2024 年 1 月 18 日
约翰 母鹿 2024 年 1 月 18 日

如何删除最后一条重复的记录

如有任何帮助,我们将不胜感激

merge duplicates snowflake-cloud-data-platform
1个回答
0
投票

删除重复项的一种方法是使用分析函数 row_number() over (partition...) 并选择/插入到 row_number() = 1 的表中。

--未经测试

insert overwrite into temp_table
with duplicate_table as(
       select dup_table.*,  row_number() 
    over (partition by FIRST_NAME,LAST_NAME order by  CREATED_DATE) as r_num from dup_table)
   select FIRST_NAME,LAST_NAME, CREATED_DATE from duplicate_table 
   where r_num = 1;
© www.soinside.com 2019 - 2024. All rights reserved.