sql - 根据条件对 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 中的哪个功能?
解决方案
您可以group by
为此目的使用:
select Adgroup ID, date, Sales, Cost, any_value(ad_group_name)
from t
group by Adgroup ID, date, Sales, Cost;
推荐阅读
- javascript - Javascript / JQuery 从表上的输入框中获取值
- php - 将部分 json 对象插入数据库仅插入一个括号
- .net-core - 在应用程序启动时设置 Hangfire 循环作业时出错
- cassandra - 如何将昨天的 Cassandra 数据复制到 csv
- python - 接收一个字母并将该字母向右旋转 13 位的 Python 函数
- python - PyQt4 / QTableView:如何更改选择矩形的样式?
- swift - Swift 函数和参数
- java - WebLogic 部署成功但出现错误
- javascript - JSON数据解析
- javascript - 从 Firestore 的一个集合中获取所有文档