首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在雪花中只保留独特的行?

如何在雪花中只保留独特的行?
EN

Stack Overflow用户
提问于 2020-12-16 06:12:37
回答 1查看 584关注 0票数 1

目前,我正在将数据从API加载到雪花中,但找不到一种很好的方法来只保留表中唯一的行。这个API没有保证唯一的密钥。

我探索过:

  1. 我研究过的一个选项是使用not子句,但似乎只有在有键时才使用,至少就我所能找到的整个行而言是这样的。此方法将使用临时表进行比较。

  1. 另一种选择是从源表中选择distinct到temp表,然后将其加载回源中。我不喜欢这个方法,尽管很简单,因为有一段时间源表将没有数据。

  1. 我还尝试了几个测试来生成哈希,从而在加载之前将行内容创建自己的键表示作为附加字段。这可能是效率更低的方法,而且似乎是最不标准的。这是可能的,但作为最后的手段,如果我不能使用现有的基础设施,我希望有一个解决方案。

如果有人对这三条路径中的任何一条使用样例查询有任何解决方案,我将非常感激。

我要找的东西的伪代码

代码语言:javascript
复制
sql = "MERGE INTO INVOICES USING INVOICES_TEMP WHEN NOT MATCHED"
cur.execute(sql)

编辑:这样不会导致错误,但是我可以一次又一次地执行它,它不断地向表中添加相同的行,并且不会像我想要的那样阻止重复。因此,也许我已经降低了语法,但是我对表/字段的使用是不正确的。

代码语言:javascript
复制
MERGE INTO TABLE USING TABLE_TEMP ON TABLE.FIELD1=TABLE_TEMP.FIELD1
 AND TABLE.FIELD2=TABLE_TEMP.FIELD2 AND TABLE.FIELD3=TABLE_TEMP.FIELD3
 WHEN NOT MATCHED THEN INSERT (FIELD1,FIELD2,FIELD3) VALUES
 (TABLE_TEMP.FIELD1,TABLE_TEMP.FIELD2,TABLE_TEMP.FIELD3)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-16 07:50:29

如果我正确地理解了你的问题,我宁愿你的第一个选择。可以将合并语句中的列比较扩展到所有列,这样就不局限于键。

代码语言:javascript
复制
merge into target_table using source_table 
    on target_table.col1 = source_table.col1
    and target_table.col2 = source_table.col2
    and target_table.col3 = source_table.col3
    ...

关于合并的更多信息:https://docs.snowflake.com/en/sql-reference/sql/merge.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65318155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档