Google BigQuery - 在 Google BigQuery SQL 中模拟 Pandas removeDuplicates()
Google BigQuery - simulate Pandas removeDuplicates() in Google BigQuery SQL
给定 Google BigQuery 数据集 col_1...col_m,如何使用 Google BigQuery SQL 到 return 没有重复项的数据集... [col1, col3, col7] 这样当 [col1, col3, col7] 中有重复行时,这些重复项中的第一行是 return ed,并且在这些列中具有重复字段的其余行都被删除了吗?
示例:removeDuplicates([col1, col3])
col1 col2 col3
---- ---- ----
r1: 20 25 30
r2: 20 70 30
r3: 40 70 30
returns
col1 col2 col3
---- ---- ----
r1: 20 25 30
r3: 40 70 30
使用 python pandas 很容易做到这一点。对于数据框(即矩阵),您调用 pandas 函数 removedDuplicates([field1, field2, ...])
。但是,在 Google Big Query SQL.
的上下文中未指定 removeDuplicates
我对如何在 Google Big Query 中做到这一点的最佳猜测是使用 rank()
函数:
https://cloud.google.com/bigquery/query-reference#rank
我正在寻找一个简洁的解决方案(如果存在的话)。
您可以按要从中删除重复项的所有列分组,并使用其他列的 FIRST()
。也就是说,removeDuplicates([col1, col3])
将转换为
SELECT col1, FIRST(col2) as col2, col3
FROM table
GROUP EACH BY col1, col3
请注意,在 BigQuery SQL 中,如果 col1
和 col3
的不同值超过一百万,则需要 EACH
关键字。
给定 Google BigQuery 数据集 col_1...col_m,如何使用 Google BigQuery SQL 到 return 没有重复项的数据集... [col1, col3, col7] 这样当 [col1, col3, col7] 中有重复行时,这些重复项中的第一行是 return ed,并且在这些列中具有重复字段的其余行都被删除了吗?
示例:removeDuplicates([col1, col3])
col1 col2 col3
---- ---- ----
r1: 20 25 30
r2: 20 70 30
r3: 40 70 30
returns
col1 col2 col3
---- ---- ----
r1: 20 25 30
r3: 40 70 30
使用 python pandas 很容易做到这一点。对于数据框(即矩阵),您调用 pandas 函数 removedDuplicates([field1, field2, ...])
。但是,在 Google Big Query SQL.
我对如何在 Google Big Query 中做到这一点的最佳猜测是使用 rank()
函数:
https://cloud.google.com/bigquery/query-reference#rank
我正在寻找一个简洁的解决方案(如果存在的话)。
您可以按要从中删除重复项的所有列分组,并使用其他列的 FIRST()
。也就是说,removeDuplicates([col1, col3])
将转换为
SELECT col1, FIRST(col2) as col2, col3
FROM table
GROUP EACH BY col1, col3
请注意,在 BigQuery SQL 中,如果 col1
和 col3
的不同值超过一百万,则需要 EACH
关键字。