考虑下表(简化版):
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 { EM> :
max(created_at)
但是当我在BigQuery中运行相同的操作时,我收到以下错误:
查询失败错误:随机播放达到了表__I0的广播限制 (播放至少150393576字节)。考虑使用分区 加入而不是广播联接。工作ID: 圆要旨-812:job_A_CfsSKJICuRs07j7LHVbkqcpSg
知道如何使上述查询在BigQuery中工作吗?
答案 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