重复的雪花

时间:2020-04-24 15:11:51

标签: primary-key snowflake-cloud-data-platform

在我的用例中,计划好的Job读取CSV并写入雪花。

当我安排从CSV读取并每小时写入雪花时,我看到雪花中有多个重复项。尽管我的ID是PRIMARY KEY(ALTER TABLE表名,ADD PRIMARY KEY(第1列)。

我了解Snowflake支持定义和维护约束,但是不执行约束,但始终强制执行的NOT NULL约束除外。 我需要帮助来解决此问题。

详细说明一下,让我们考虑一下场景:

步骤1:在上午9点,将数据从CSV插入到Snowflake ID Customer name Price 1111 John Mathew 10 1112 David Becham 20

第2步:在晚上10点,我又得到一行,因此我的CSV是 ID Customer name Price 1111 John Mathew 10 1112 David Becham 20 1113 Hello World 40

在雪花中出现

ID Customer name Price 1111 John Mathew 10 1112 David Becham 20 1113 Hello World 40

我得到的是重复的内容,如下所示 ID Customer name Price 1111 John Mathew 10 1112 David Becham 20 1113 Hello World 40 1111 John Mathew 10 1112 David Becham 20

2 个答案:

答案 0 :(得分:1)

如果您提供了代码,将会有所帮助。好像您正在更新CSV,这意味着Snowflake将整个文件视为要加载的新文件,然后它将再次加载整个文件。如果您只是在运行COPY INTO命令而没有下游逻辑,则将发生这种情况。

两个选项:

1)不要更新CSV文件...只需使用新数据创建一个新文件。然后,COPY INTO命令将正常工作。

2)如果您还收到对先前记录的更新,则应将COPY INTO运行到临时表中,然后将MERGE的数据运行到主键上的最终表中。

答案 1 :(得分:0)

创建另一个表(第二个表)来存储去重记录。第一个表将从您的来源(CSV)获取数据。然后在第一个表的顶部创建一个流以捕获更改。然后为该流创建一个任务,该任务将合并(插入/更新)数据到第二个表中。