如何在Snowflake中合并单独的数据集时确保唯一性

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

因此,我正在尝试将两个相似的数据集合并到Snowflake中的单个数据集中,以确保合并的数据集中的唯一性。

数据集1-GA目标数据集

专栏:

ID        Unique ID for each record in the dataset
UserID    ID for each user in the dataset
URL       URL the Goal occurrred on
Time      DateTime, aggregated to the nearest minute, that the exit goal occured in
Goals     Number of goals triggered by the row

数据集2-内部Web流量数据集

专栏:

ID        Unique ID for each record in the dataset
UserID    ID for each user in the dataset
URL       URL of the pageview/pageload event
Time      DateTime, to nanosecond, that the pageview/pageload event occurred

已知条件

其中一个数据集中可能有记录,而另一个数据集中不存在。

第三个数据集的目标

要创建包含以下内容的数据集:

Dataset1.ID
Dataset2.ID
  • 没有Dataset1.ID的重复项

  • 没有DATAset2.ID的副本

  • Dataset1.ID的每个实例和Dataset2.ID的每个实例都包含在Dataset3中,而不管其他数据集中是否有匹配项。

  • 到目前为止我尝试过的:

我从Dataset1开始,并根据以下内容将其加入Dataset2:

UserID
URL
Time (where the time in Dataset2 was within 4 minutes of Dataset1 - this is due to the systems running on different servers and platforms, which introduces a time difference in addition to the aggregated time issue).

如果获得多个匹配,我从数据集2中为数据集1中的每个ID选择最小ID。

这导致从数据集1的多个ID分配了与数据集2相同的ID,我想避免这种情况。

我尚未尝试构建它,但是我能想到克服的唯一解决方案是分别处理Dataset1中的每个记录,并从Dataset1中标识ID-当匹配时,选择最低的ID并写将此数据写入数据集1中的新列,然后还将数据集1中的ID写入数据集2中新匹配的ID,并将其写入数据集2中的新列。然后,当我从Dataset1获取下一行时,仅尝试链接到尚未在Dataset2中设置Dataset1的Dataset2。

我希望这是有道理的...

谢谢,斯科特

因此,我正在尝试将两个相似的数据集合并到Snowflake中的单个数据集中,以确保合并后的数据集具有唯一性。。Dataset1-GA目标数据集列:ID每个记录的唯一ID ...

sql data-warehouse snowflake-data-warehouse
2个回答
0
投票

通常,您可以尝试在数据集中引入另一个内部排序,并进行完全外部联接。因此,假设您有:


0
投票

您可以使用普通的插入/追加方法来解决您的问题。通过ID对max(time)进行分组的视图会将答案集减少为唯一ID。您还可以在每个额外的行中为每个系统插入一个二进制值。假设系统1为1,系统2为2。汇总该列将向您显示数据的来源:1仅在系统1中,2仅在系统2和3中,对于两个系统。

© www.soinside.com 2019 - 2024. All rights reserved.