我有一个包含BigQuery
,col_1_id
,col_2_id
,col_3
,col_4
,col_5
列的Google col_6
表格,col_7
,col_8
问题在于,有许多行具有相同的col_1_id
和col_2_id
,并且我必须使其唯一。我已尝试基于两列的GROUP BY表,然后选择第一列,但这需要太多内存。
如何清理表格,使得没有两行具有相同的col_1_id
,col_2_id
?
这是我尝试过但失败的原因:
SELECT
col_1_id,
col_2_id,
ANY_VALUE(col_3),
ANY_VALUE(col_4),
ANY_VALUE(col_5),
ANY_VALUE(col_6),
ANY_VALUE(col_7),
ANY_VALUE(col_8)
FROM
`my_proj.my_table` A
GROUP BY
A.col_1_id,
A.col_2_id
但我得到的消息如下:
错误:查询执行期间超出资源:无法在分配的内存中执行查询。 GROUP BY运算符使用了太多内存
而且我也不确定这会删除行。
如何查询原位删除重复项或创建包含结果的新表?
答案 0 :(得分:2)
我会尝试重新创建表格:
CREATE TABLE new_tab_name
AS
SELECT * EXCEPT rn
FROM(SELECT *,ROW_NUMBER() OVER(PARTITION BY col_1_id,col_2_id ORDER BY 1) AS rn
FROM tab_name) sub
WHERE rn = 1;
之后删除旧表并重命名。