Google BigQuery - 在Google BigQuery SQL中模拟Pandas removeDuplicates()

cgn*_*utt 3 sql analytics pandas google-bigquery

给定一个带有col_1 .... col_m的Google BigQuery数据集,如何使用Google BigQuery SQL返回没有重复项的数据集... [col1,col3,col7],这样当有重复的行时[col1,col3,col7],然后返回这些重复项中的第一行,并删除那些列中具有重复字段的其余行?

示例:removeDuplicates([col1,col3])

    col1 col2 col3
    ---- ---- ----
r1: 20   25   30
r2: 20   70   30
r3: 40   70   30
Run Code Online (Sandbox Code Playgroud)

回报

  col1 col2 col3
  ---- ---- ----
r1: 20   25   30
r3: 40   70   30
Run Code Online (Sandbox Code Playgroud)

要使用python pandas这样做很容易.对于数据帧(即矩阵),可以调用pandas函数removedDuplicates([field1, field2, ...]).但是,未在Google Big Query SQL的上下文中指定removeDuplicates.

我最好猜测如何在Google Big Query中使用该rank()功能:

https://cloud.google.com/bigquery/query-reference#rank

我正在寻找一个简洁的解决方案,如果存在的话.

Jor*_*ani 5

您可以按要删除重复项的所有列进行分组,并使用FIRST()其他列.也就是说,removeDuplicates([col1, col3])会翻译成

SELECT col1, FIRST(col2) as col2, col3 
FROM table 
GROUP EACH BY col1, col3
Run Code Online (Sandbox Code Playgroud)

需要注意的是BigQuery中的SQL,如果你有超过一百万个不同的值col1,并col3,你需要的EACH关键字.