0

我在 BigQuery 中有这个表,我想检查三列的重复项:

  • 客户 ID、日期 1 和产品。

如果存在重复项,我需要将其删除并在比较两者后保留较新的日期(日期 1 或日期 2)。

对于以下示例,结果应为:

客户ID 日期1 日期2 产品 价格
5421 2019-02-25 2019-02-25 P1 500
6521 2010-07-06 2019-05-04 P2 1254
4124 2019-05-03 2020-06-16 P3 354
5421 2019-02-25 2019-12-15 P1 547

结果:

客户ID 日期1 产品 价格
6521 2010-07-06 P2 1254
4124 2019-05-03 P3 354
5421 2019-12-15 P1 547

非常感谢!!!

4

2 回答 2

1

您可以使用greatest()来订购结果。在 BigQuery 中,您可以使用聚合来获取每个客户的最新记录:

select (array_agg(t order by greatest(date1, date2) limit 1))[ordinal(1)].* except (date1, date2),
       max(greatest(date1, date2)) as the_date
from t
group by customerId;
于 2021-03-03T22:22:59.563 回答
0

考虑下面

select as value array_agg(struct(CustomerID, greatest(Date1, Date2) as Date1, Product, Price) order by greatest(Date1, Date2) desc limit 1)[offset(0)]
from `project.dataset.table` t
group by CustomerID, Date1, Product      

当应用于您问题中的样本数据时 - 输出是

在此处输入图像描述

于 2021-03-03T22:22:26.667 回答