从 BigQuery 中删除重复记录

Posted

技术标签:

【中文标题】从 BigQuery 中删除重复记录【英文标题】:Delete Duplicate Record From BigQuery 【发布时间】:2021-06-06 14:06:15 【问题描述】:

我有一个具有列 ID 的表,它定义了唯一的记录,所有具有相同 ID 的行都是重复的,我想删除重复的行并只保留唯一的 ID

ID Data
1   2
1   2
2   3
2   3

删除后(BigQuery 表中的我的数据)

ID Data
1   2
2   3

我可以创建一个只有唯一记录的新表,但有什么方法可以更新现有表,即从表中删除重复记录。

【问题讨论】:

【参考方案1】:

考虑下面(所有具有相同 ID 的行都是重复的)

select as value any_value(t)
from `project.dataset.table` t
group by id    

有输出

如果重复的定义是-所有字段都重复的所有行-请考虑以下

select as value any_value(t)
from `project.dataset.table` t
group by format('%t', t)

以下是如何将其与 DDL 一起使用的示例:

create or replace table `project.dataset.table` as 
select * from ( 
  select as value any_value(t)
  from `project.dataset.table` t
  group by format('%t', t)
);

【讨论】:

我想更新现有表并删除重复项,该怎么做? 您可以使用create or replace table your_table as ... 和上面提供的选择 - 对吧? 但这可能是昂贵的操作,我们可以只针对重复项吗? 与删除相同的成本-但最重要的是,我怀疑在您的情况下删除是否有用!还要记住 - BQ 是一个柱状的,所以成本不是根据行数计算的,而是根据所触及的列数计算的 能否举个同表删除的例子对我有用

以上是关于从 BigQuery 中删除重复记录的主要内容,如果未能解决你的问题,请参考以下文章

从Google BigQuery中的嵌套表中删除重复项

BigQuery - 删除特定的重复记录

BigQuery:如何从重复记录中仅提取某些字段作为另一个重复字段

Bigquery 重复数据删除查询无法正常工作

BigQuery 标准 SQL:从表中删除重复项

BigQuery 从查询中创建重复记录字段