首页 > 解决方案 > 处理 BigQuery(嵌套表)中的重复项

问题描述

我认为这是一个非常简单的问题,但我想要一些指导:我不想删除一个表来发送一个包含重复数据删除记录的新表,例如基于下面使用 BigQuery 的查询使用 DELETE FROM,是吗可能的?PS:这是一个嵌套表!

SELECT
  *
FROM (
  SELECT
    *,
    ROW_NUMBER()
          OVER (PARTITION BY id, date_register) row_number
  FROM
    dataset.table)
WHERE
  row_number = 1 
 order by id, date_register

标签: google-bigqueryduplicates

解决方案


要在不重新创建表的情况下就地删除重复数据 - 使用MERGE

MERGE `temp.many_random` t
USING (
  SELECT DISTINCT *
  FROM `temp.many_random`
)
ON FALSE
WHEN NOT MATCHED BY SOURCE THEN DELETE
WHEN NOT MATCHED BY TARGET THEN INSERT ROW

它比当前接受的答案更简单,因为它不会要求您匹配当前的分区或集群 - 它只会尊重它。


推荐阅读