【问题标题】:how to drop duplicates based on specific column in snowflake如何根据雪花中的特定列删除重复项
【发布时间】:2021-05-10 02:48:49
【问题描述】:

我有一个名为“Mytable”的表,如下所示(只是一个示例),它有两列 Hash 和 last_checked。

Hash    last_checked
1       2021-04-01T12:14:00+00:00
1       2021-04-02T12:14:00+00:00
1       2021-04-03T12:14:00+00:00
2       2021-04-01T12:14:00+00:00
2       2021-04-02T12:14:00+00:00
2       2021-04-03T12:14:00+00:00

我想根据 last_checked 列/字段删除重复的哈希值。我需要保留最新的 last_checked 日期值。输出表如下

Hash    last_checked
1       2021-04-03T12:14:00+00:00
2       2021-04-03T12:14:00+00:00

我没有在任何地方找到答案,所以希望我能在这里得到答案。谢谢

【问题讨论】:

  • 它只有 2 列,如果是,你怎么知道要删除哪一个。你可以选择使用row_num函数和rank,或者使用distinct,你可以识别最新的记录,但是要执行删除操作,你需要识别一个表中的唯一行并且只有这2个字段,没有办法删除可以执行。

标签: snowflake-cloud-data-platform


【解决方案1】:

假设你有 HASHTABLE AS TABLE With Columns Hash & last_checked

在使用 Predicate 之后使用此 HASHTABLE 中的子查询,还使用 ​​Qualify Predicate 过滤 Windows 函数。

从哈希表中删除使用 (

SELECT HASHVAL,last_checked FROM HASHTABLE Qualify ROW_NUMBER() OVER (PARTITION BY HASHVAL ORDER BY last_checked DESC) !=1

) 作为

HASHTABLE_DERIVED

HASHTABLE.HASHVAL=HASHTABLE_DERIVED.HASHVAL 和 HASHTABLE.last_checked=HASHTABLE_DERIVED.last_checked

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2022-01-23
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多