我们公司要求用户输入各种信息,包括地址和车牌,以获得汽车保险报价 我们将此信息存储在BigQuery中。 一些用户在不同的时间输入了一个以上的车牌(他们可能拥有不止一辆汽车)和一个以上的地址。 基本上结构看起来像这样
JSON
我们希望利用这两条信息之间的所有链接,将一位用户的所有信息排成一行 上表均具有连接,因此应位于
这有可能吗?什么是最佳实践? 我们已经对STRING_AGG和ARRAY_AGG进行了试验,但尚未找到解决方案。
答案 0 :(得分:0)
假设您还有一个额外的列user_id
,并输入了表格:
row user_id info_1 info_2
----- -------- -------- --------
1 u1 a y
2 u2 a x
3 u1 b y
4 u1 b z
5 u2 c z
6 u2 a z
以下查询为您分别提供两个info_1
和info_1
的不同元素的列表:
select
user_id,
array_agg(disctinc info_1) as element_in_info_1,
array_agg(disctinc info_2) as element_in_info_2,
from table
group by 1
带有输入数据的测试示例
with table as (
select 'u1' as user_id, 'a' as info_1, 'y' as info_2 union all
select 'u2' as user_id, 'a' as info_1, 'x' as info_2 union all
select 'u1' as user_id, 'b' as info_1, 'y' as info_2 union all
select 'u1' as user_id, 'b' as info_1, 'z' as info_2 union all
select 'u2' as user_id, 'c' as info_1, 'z' as info_2 union all
select 'u2' as user_id, 'a' as info_1, 'z' as info_2
)
select
user_id,
array_agg(distinct info_1) as element_in_info_1,
array_agg(distinct info_2) as element_in_info_2
from table
group by 1
结果