考虑以下相当标准的非规范化事务信息模型:
with transactions as(
select 'T_10000' as trans_id, 'L_1000' as line_item_id, 'P_100' as part_id
union all
select 'T_10000', 'L_1000', 'P_101'
union all
select 'T_10000', 'L_1001', 'P_103'
union all
select 'T_10001', 'L_1002', 'P_104'
)
我想进一步反规范化这个表,以消除所有重复的值。bigquery中的数组似乎是一个很好的选择。
下面的值很接近,但仍在第二列中返回重复的值。
select trans_id, array_agg(line_item_id), array_agg(part_id)
from transactions
group by 1
此外,下面的值也很接近,但现在在第一列中包含重复的值。
select trans_id, line_item_id, array_agg(part_id)
from transactions
group by 1, 2
有没有一个直接的方法来实现这一点?
2条答案
按热度按时间vlf7wbxs1#
下面是bigquery标准sql
当应用于问题的样本数据时-结果是
7ivaypg92#
这就是你想要的吗?