如何在 BigQuery 中找到每条记录(由 ID 标识)的所有不同值?

Posted

技术标签:

【中文标题】如何在 BigQuery 中找到每条记录(由 ID 标识)的所有不同值?【英文标题】:How do I find all distinct values for each record (identified by ID) in BigQuery? 【发布时间】:2021-02-03 13:55:19 【问题描述】:

数据

这是从另一个地方导入的,所以我在 BigQuery 中的数据如下所示:

order_id | owner_pk | owner_sk | other_properties | currency

注意事项

PK+SK 是原始数据集中的索引(但在 BQ 中没有) 原始数据集中 PK+SK 的订单 ID 是唯一的 OrderID+PK+SK 对于每条记录都是唯一的(根据原始数据集)

问题

我想知道是否有来自同一所有者 (PK+SK) 的订单 (order_id) 具有不同的(不同的?)currency 值。我不需要实际的订单,真/假就可以了。

选项 1:来自同一所有者的所有订单使用相同的货币 选项 2:在一个所有者中存在使用不同货币的订单

感谢任何有关查询的帮助! :)

【问题讨论】:

【参考方案1】:

您可以使用聚合。我会返回货币和数字:

select owner_pk, owner_sk,
       array_agg(distinct currency) as currencies,
       count(distinct currency) as num_currencies
from t
group by owner_pk, owner_sk;

【讨论】:

以上是关于如何在 BigQuery 中找到每条记录(由 ID 标识)的所有不同值?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery - 为每个 id 添加完整的日期范围

如何将集合和子集合一起从 firestore 导出到 excel 或 bigquery 表?

如何在 MySQL 记录集中找到 ID 间隙?

如何在 BigQuery 中获取每天的累积记录

有没有办法让 Pub/Sub -> Dataflow -> BigQuery 模板处理每条消息的多个记录?

如何在bigquery中按天计算(非)连续记录?