Bigquery - 合并具有一个公共值的数组
Bigquery - Merging Arrays With One Common Value
我找不到合并两个具有共同值的数组的方法。我要创建的是一个数组,用作近期不需要的客户属性的各种存档。
我创建了一个数据库 fiddle 作为我正在使用的数据的示例。
https://www.db-fiddle.com/f/gKGsBFSgzZkTv3bMNhU9UG/1
前两个结果是两个单独的表,第三个结果是我希望通过将这两个数组合并在一起得到的。
我能想到的唯一方法可能是取消嵌套两个表,连接在一起然后重新制作数组,但我希望有一个 cleaner/more 有效的方法,因为我正在处理大量数据。
有什么建议吗?
尝试以下操作:
with test as (
select 'user 1' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes union all
select 'user 2' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes
),
test_2 as (
select 'user 1' as user, ['attribute 4', 'attribute 5', 'attribute 6'] as attributes union all
select 'user 2' as user, ['attribute 7', 'attribute 8', 'attribute 9'] as attributes
)
select t.user
, array_concat(t.attributes,t2.attributes)
from test t
join test_2 t2
on t.user=t2.user
array_concat 函数将为每个匹配的用户列将两列连接在一起。
使用示例数据生成以下内容:
您可以使用 ARRAY_CONCAT to meet your requirement since it will merge two arrays and you can provide the condition in the WHERE 子句。
with test as (
select 'user 1' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes union all
select 'user 2' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes
),
test_2 as (
select 'user 1' as user, ['attribute 4', 'attribute 5', 'attribute 6'] as attributes union all
select 'user 2' as user, ['attribute 7', 'attribute 8', 'attribute 9'] as attributes
)
select t.user,array_concat(t.attributes,t_2.attributes) as attributes
from test as t,test_2 as t_2
where t.user=t_2.user
输出Table
我找不到合并两个具有共同值的数组的方法。我要创建的是一个数组,用作近期不需要的客户属性的各种存档。
我创建了一个数据库 fiddle 作为我正在使用的数据的示例。 https://www.db-fiddle.com/f/gKGsBFSgzZkTv3bMNhU9UG/1
前两个结果是两个单独的表,第三个结果是我希望通过将这两个数组合并在一起得到的。
我能想到的唯一方法可能是取消嵌套两个表,连接在一起然后重新制作数组,但我希望有一个 cleaner/more 有效的方法,因为我正在处理大量数据。
有什么建议吗?
尝试以下操作:
with test as (
select 'user 1' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes union all
select 'user 2' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes
),
test_2 as (
select 'user 1' as user, ['attribute 4', 'attribute 5', 'attribute 6'] as attributes union all
select 'user 2' as user, ['attribute 7', 'attribute 8', 'attribute 9'] as attributes
)
select t.user
, array_concat(t.attributes,t2.attributes)
from test t
join test_2 t2
on t.user=t2.user
array_concat 函数将为每个匹配的用户列将两列连接在一起。
使用示例数据生成以下内容:
您可以使用 ARRAY_CONCAT to meet your requirement since it will merge two arrays and you can provide the condition in the WHERE 子句。
with test as (
select 'user 1' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes union all
select 'user 2' as user, ['attribute 1', 'attribute 2', 'attribute 3'] as attributes
),
test_2 as (
select 'user 1' as user, ['attribute 4', 'attribute 5', 'attribute 6'] as attributes union all
select 'user 2' as user, ['attribute 7', 'attribute 8', 'attribute 9'] as attributes
)
select t.user,array_concat(t.attributes,t_2.attributes) as attributes
from test as t,test_2 as t_2
where t.user=t_2.user
输出Table