【发布时间】:2020-03-02 13:04:14
【问题描述】:
我目前正在尝试对我的一张表在 Google BigQuery 中的行进行重复数据删除。基本上,我有一个表,其中包含除一列之外的重复值的基本行。一个例子是:
请注意,除“广告组名称”列外,所有列都是相同的。我想做的是:如果所有列相同但列广告组名称不同,则保留单行(哪一行无关紧要) >.
我正在考虑创建分区并使用排名函数来表示该分区内的不同值。比如:
RANK() OVER (PARTITION BY Adgroup ID, date, Sales, Cost ORDER BY Ad group name) AS rank
理论上(呵呵)这应该会导致:
使用它,我可以使用WHERE Rank = 1 过滤一个新的子查询。在这种情况下,这将删除所有重复的行。
但是,我发现 BigQuery 不支持使用 FLOAT64 进行分区,因此我的解决方案不起作用。另外,我认为有更好的方法可以做到这一点,但我很难找到如何做到这一点。我可以专门利用 BigQuery 中的哪个功能?
【问题讨论】:
标签: sql google-bigquery