我有一个系统,我们每天晚上将数据加载到临时表中,然后使用 MERGE 将其上传到最终表中。 我发现最终表中有重复的记录。我的调试显示用于 JOIN 条件的字段之一为 NULL,因此 MERGE 正在插入记录而不是更新记录。
我需要删除重复记录并且需要知道如何删除。
此表上没有主键,只有映射到平面文件的列,然后是控制列
例如:
FIRST_NAME | LAST_NAME | 创建_日期 |
---|---|---|
约翰 | 母鹿 | 2024 年 1 月 18 日 |
简 | 母鹿 | 2024 年 1 月 18 日 |
菲尔 | 骑士 | 2024 年 1 月 18 日 |
约翰 | 母鹿 | 2024 年 1 月 18 日 |
如何删除最后一条重复的记录
如有任何帮助,我们将不胜感激
删除重复项的一种方法是使用分析函数 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;