BigQuery - DELETE 语句以删除重复项 Group by Id
BigQuery - DELETE statement to remove duplicates Group by Id
我正在尝试使用 DELETE
从我的 BigQuery table 中删除重复记录。
我找到了上述问题的多种解决方案,但大多数使用 CREATE
、REPLACE
或 SELECT
。
我找到的使用 DELETE
的最接近的解决方案是:
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)
这条语句删除table中所有不满足NOT IN
条件的记录。例如,如果我的 table 如下所示:
Id Loadtime
123 5
123 4
456 2
321 1
上面的查询删除了除第一行以外的所有记录。
我如何修改查询,以便它只删除第二行,即它只删除 id 组?
最终输出应该是:
Id Loadtime
123 5
456 2
321 1
下面应该符合您的预期
#standardSQL
DELETE FROM `yourproject.yourdataset.duplicates`
WHERE STRUCT(id, loadTime) NOT IN (
SELECT AS STRUCT id, MAX(loadTime) loadTime
FROM `yourproject.yourdataset.duplicates`
GROUP BY id)
因此,在您的示例中 - 它只会删除第二行
Id Loadtime
123 4
我正在尝试使用 DELETE
从我的 BigQuery table 中删除重复记录。
我找到了上述问题的多种解决方案,但大多数使用 CREATE
、REPLACE
或 SELECT
。
我找到的使用 DELETE
的最接近的解决方案是:
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)
这条语句删除table中所有不满足NOT IN
条件的记录。例如,如果我的 table 如下所示:
Id Loadtime
123 5
123 4
456 2
321 1
上面的查询删除了除第一行以外的所有记录。 我如何修改查询,以便它只删除第二行,即它只删除 id 组?
最终输出应该是:
Id Loadtime
123 5
456 2
321 1
下面应该符合您的预期
#standardSQL
DELETE FROM `yourproject.yourdataset.duplicates`
WHERE STRUCT(id, loadTime) NOT IN (
SELECT AS STRUCT id, MAX(loadTime) loadTime
FROM `yourproject.yourdataset.duplicates`
GROUP BY id)
因此,在您的示例中 - 它只会删除第二行
Id Loadtime
123 4