【发布时间】:2020-06-02 22:18:13
【问题描述】:
我正在尝试使用 DELETE 从我的 BigQuery 表中删除重复记录。
我找到了上述问题的多种解决方案,但大多数都使用CREATE、REPLACE 或SELECT。
我发现使用DELETE 的最接近的解决方案是:
BigQuery - DELETE statement to remove duplicates
BigQuery Standard SQL: Delete Duplicates from Table
我对以下解决方案有后续问题:
#standardSQL
DELETE FROM `yourproject.yourdataset.duplicates`
WHERE STRUCT(id, loadTime) NOT IN (
SELECT AS STRUCT id, MAX(loadTime) loadTime
FROM `yourproject.yourdataset.duplicates` where id= '123'
GROUP BY id)
此语句从表中删除所有不满足NOT IN 条件的记录。例如,如果我的表格如下所示:
Id Loadtime
123 5
123 4
456 2
321 1
上面的查询删除了除第一行之外的所有记录。 如何修改查询,使其仅删除第二行,即仅按 id 删除组?
最终的输出应该是:
Id Loadtime
123 5
456 2
321 1
【问题讨论】:
-
提供输入/初始数据和预期结果的示例
-
选择 Loadtime 5 而不是 4 背后的逻辑是什么 - 你想留下更大的 Loadtime 还是其他原因?
-
是的。对于每个 Id,我只想要 max(LoadTime) 的行
标签: google-bigquery duplicates delete-row