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

Using BigQuery SQL to split nested values on multiple columns

提问人:CLT00 提问时间:11/18/2023 最后编辑:CLT00 更新时间:11/18/2023 访问量:32

问:

我有下表,其中包含一个 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 拆分 unnest

评论


答:

1赞 Mikhail Berlyant 11/18/2023 #1

使用以下简单方法

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

如果应用于问题中的示例数据 - 输出为

enter image description here