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 中,如果 col1col3 的不同值超过一百万,则需要 EACH 关键字。