首页 > 解决方案 > 根据条件对 BigQuery 中的行进行重复数据删除

问题描述

我目前正在尝试对我的一张表的 Google BigQuery 中的行进行重复数据删除。基本上,我有一个表,其中包含除一列之外的重复值的基本行。一个例子是:

在此处输入图像描述

请注意,除“广告组名称”列外,所有列都是相同的。我想做的是:如果所有列都相同但列广告组名称不同,则保留一行(不管哪一行) 。

我正在考虑创建分区并使用排名函数来表示该分区内的不同值。就像是:

RANK() OVER (PARTITION BY Adgroup ID, date, Sales, Cost ORDER BY Ad group name) AS rank

理论上(呵呵)这应该导致类似:

在此处输入图像描述

使用它,我可以使用WHERE Rank = 1. 在这种情况下,这将删除所有重复的行。

但是,我发现 BigQuery 不支持使用 FLOAT64 进行分区,所以我的解决方案不起作用。另外,我认为有更好的方法可以做到这一点,但我很难找到如何做到这一点。我可以专门利用 BigQuery 中的哪个功能?

标签: sqlgoogle-bigquery

解决方案


您可以group by为此目的使用:

select Adgroup ID, date, Sales, Cost, any_value(ad_group_name)
from t
group by Adgroup ID, date, Sales, Cost;

推荐阅读