Bigquery选择非重复记录

时间:2015-09-27 06:30:52

标签: google-bigquery

考虑下表(简化版):

id int,
amount decimal,
transaction_no,
location_id int,
created_at datetime

以上架构用于存储餐馆的POS收据。现在,此表有时包含同一日期的收据,同一 transaction_no 位于同一 location_id

在这种情况下,我想要做的是获取 location_id &的最后一次收据。 transaction_no created_at desc 排序。

在MySQL中,我使用以下查询来获取 location_id & transaction_no

max(created_at)

但是当我在BigQuery中运行相同的操作时,我收到以下错误:

  

查询失败错误:随机播放达到了表__I0的广播限制   (播放至少150393576字节)。考虑使用分区   加入而不是广播联接。工作ID:   圆要旨-812:job_A_CfsSKJICuRs07j7LHVbkqcpSg

知道如何使上述查询在BigQuery中工作吗?

1 个答案:

答案 0 :(得分:3)

SELECT id, amount, transaction_no, location_id, created_at 
FROM (
  SELECT 
  id, amount, transaction_no, location_id, created_at, 
  ROW_NUMBER() OVER(PARTITION BY transaction_no, location_id 
                    ORDER BY created_at DESC) as last
  FROM your_dataset.your_table
)
WHERE last = 1