BigQuery中将重复记录UNNEST为单行多列的实现方案咨询
实现思路
不需要对people数组执行全量UNNEST触发行扩展,直接从数组内部按角色筛选对应元素,提取id生成独立列即可,避免生成冗余多行。
操作步骤
- 确认people数组内每个元素的角色标识字段(通常为
type/role类字段,用于区分buyer、seller身份) - 在SELECT子句中通过子查询嵌套UNNEST的方式,按角色筛选后提取对应id,不会触发外层行扩展
- 可通过LIMIT 1、安全取值逻辑兼容数组中缺少对应角色的场景,避免查询报错
示例查询
假设people数组元素的角色标识字段为role,对应取值为BUYER/SELLER,可参考如下代码实现:
SELECT eventTime, (SELECT id FROM UNNEST(people) WHERE role = 'BUYER' LIMIT 1) AS buyer_Id, (SELECT id FROM UNNEST(people) WHERE role = 'SELLER' LIMIT 1) AS seller_Id FROM `public.table` WHERE verb = 'event'
你可以根据实际业务中的角色字段名、取值规则调整子查询中的过滤条件即可。
内容的提问来源于stack exchange,提问作者code-gijoe
相关产品推荐
相关产品推荐

