使用 BigQuery SQL 拆分多个列上的嵌套值

问题描述 投票:0回答:1

我有下表,其中包含一个 ID 和两列,其中一列为 KEYS,另一列为 VALUES。我需要拆分/取消嵌套行,以便我可以有选择地从指定的键获取值。

键的值数量始终相同,但每个记录的数量可能不同。

输入:

ID   | KEYS          | VALUES
X1   | ['a','b','c'] | ['1','2','3']
X2   | ['a','b','f'] | ['1','2','6']
X3   | ['b','e','f'] | ['2','5','6']

我尝试过的所有操作都会产生键重复,其中值与键不正确对齐。

所需输出:

ID   | KEY | VAL
X1   | a   | 1
X1   | b   | 2
X1   | c   | 3
X2   | a   | 1
X2   | b   | 2
X2   | f   | 6
X3   | b   | 2
X3   | e   | 5
X3   | f   | 6
sql google-bigquery split unnest
1个回答
0
投票

使用以下简单方法

select id, key, val
from your_table,
unnest(keys) as key with offset
join unnest(values) as val with offset
using(offset)    

如果应用于您问题中的样本数据 - 输出为

© www.soinside.com 2019 - 2024. All rights reserved.