【问题标题】:Remove Duplicate Data in bigquery删除 bigquery 中的重复数据
【发布时间】:2017-12-08 03:59:05
【问题描述】:

对不起,这里有一个新的 SQL 问题,我有一个包含类似形式数据的数据库

 U1 Program_Id  A_ID    Date
 x1    A         1       1
 x1    A         2       1
 x1    A         3       1
 x1    B         1       1
 x1    B         2       1
 x1    B         3       1
 x2    B         1       1
 x2    B         2       1

考虑到所有四列,我想去重复数据,这样我的最终输出将如下所示

U1  Program_Id  A_ID    Date
x1  A        1       1
x1  A        2       1
x1  A        3       1
x2  B        1       1
x2  B        2       1

X1 A 存在并且X1 B 也存在,对于相同的日期,因此那些是需要删除的重复项,只保留X1 A 行,X1 B 行是这里的重复项。

【问题讨论】:

  • 澄清一下,x2 B 3 1 不应该也在输出中吗?
  • 如果是这样,请尝试运行SELECT DISTINCT U1, JOBID, A_ID, DATE FROM YOUR_TABLE;
  • @Vashi:No , x2 B 3 1 也不在输入中
  • 那么,三行 x1 B ... 怎么样?为什么他们没有输出?您应该提供有关您的逻辑的更多详细信息
  • @MikhailBerlyant:是的,你是对的,对不起,我的无知,X1 A 存在,X1 b 也存在,对于同一个日期,因此这些是需要删除的重复项。

标签: sql google-bigquery


【解决方案1】:

以下是 BigQuery 标准 SQL

#standardSQL
SELECT U1, MIN(Program_Id) Program_Id, A_ID, DATE
FROM `project.dataset.table`
GROUP BY U1, A_ID, DATE

您可以使用问题中的虚拟数据测试/玩上述内容

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'x1' U1, 'A' Program_Id, 1 A_ID, 1 DATE UNION ALL
  SELECT 'x1', 'A', 2, 1 UNION ALL
  SELECT 'x1', 'A', 3, 1 UNION ALL
  SELECT 'x1', 'B', 1, 1 UNION ALL
  SELECT 'x1', 'B', 2, 1 UNION ALL
  SELECT 'x1', 'B', 3, 1 UNION ALL
  SELECT 'x2', 'B', 1, 1 UNION ALL
  SELECT 'x2', 'B', 2, 1 
)
SELECT U1, MIN(Program_Id) Program_Id, A_ID, DATE
FROM `project.dataset.table`
GROUP BY U1, A_ID, DATE
ORDER BY DATE, U1, A_ID

结果是

U1  Program_Id  A_ID    DATE     
x1  A           1       1    
x1  A           2       1    
x1  A           3       1    
x2  B           1       1    
x2  B           2       1    

【讨论】:

  • 感谢您的帮助。查询对于特定日期非常有效,但不能在日期范围内概括它
  • 如果您有后续问题 - 请将它们作为单独的问题发布,我们将很乐意回答同时,当前问题已得到解答,我尽一切可能迫使您一般地思考(参见问题的 cmets)。希望这篇文章能进一步帮助您调整和定义您的要求 - 所以您的下一个问题会更好!
  • 另外,下面的链接可以帮助您解决下一个问题 - How to AskMinimal, Complete, and Verifiable example
  • 非常感谢您的帮助 :),我想我通过从 groupby 中删除 A_ID 让查询可以处理多个日期,让我像您说的那样深入思考。如果您对原因有直觉,请这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2022-01-09
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
相关资源
最近更新 更多