在 BigQuery 中删除重复的相等行
Posted
技术标签:
【中文标题】在 BigQuery 中删除重复的相等行【英文标题】:Delete duplicate equal rows in BigQuery 【发布时间】:2020-04-28 13:22:27 【问题描述】:有一个重复行的表,其中所有列的值都相等:
+------+---------+------------+
| id | value | timestamp |
+------+---------+------------+
| 1 | 500 | 2019-10-12 |
| 2 | 400 | 2019-10-11 |
| 1 | 500 | 2019-10-12 |
+------+---------+------------+
我想保留其中一个相等的行并删除其他行。我想出了:
DELETE
FROM
`table` t1
WHERE (
SELECT
ROW_NUMBER() OVER (PARTITION BY id),
FROM
`table` t2
WHERE
t1.id = t2.id
) > 1
但这不起作用:
不支持引用其他表的相关子查询 除非它们可以去相关,例如通过将它们转换为 高效的 JOIN。
任何想法如何删除重复的行?
【问题讨论】:
【参考方案1】:以下是 BigQuery 标准 SQL
...所有列值都相等 所以你可以使用简单的
DISTINCT *
而不是DELETE
使用CREATE / REPLACE
写回同一个表
#standardSQL
CREATE OR REPLACE TABLE `project.dataset.table`
PARTITION BY date
SELECT DISTINCT *
FROM `project.dataset.table`
在PARTITION BY
子句中 - 您应该添加用于对原始表进行分区的字段
【讨论】:
以上是关于在 BigQuery 中删除重复的相等行的主要内容,如果未能解决你的问题,请参考以下文章
sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu