展平 BigQuery 表中多个相同大小的数组列

mat*_*252 3 sql flatten google-bigquery unnest

我有一个包含几列的表,其中一些是相同长度的数组。我想取消它们的嵌套,以获取来自单独行中的数组的值的结果。

所以有这样的表:

输入表

我想去:

输出表

这就是它对这些数组列之一的工作原理:

WITH data AS
(
  SELECT 1001 as id, ['a', 'b', 'c'] as array_1, [1, 2, 3] as array_2
  UNION ALL
  SELECT 1002 as id, ['d', 'e', 'f', 'g'] as array_1, [4, 5, 6, 7] as array_2
  UNION ALL
  SELECT 1003 as id, ['h', 'i'] as array_1, [8, 9] as array_2
)
SELECT id, a1
FROM data,
UNNEST(array_1) as a1
Run Code Online (Sandbox Code Playgroud)

有没有一些优雅的方法可以同时解除两个数组的嵌套?我想避免分别取消每一列的嵌套,然后将所有内容连接在一起。

Mik*_*ant 6

以下是 BigQuery 标准 SQL

#standardSQL
SELECT id, a1, a2
FROM data, UNNEST(array_1) AS a1 WITH OFFSET 
JOIN UNNEST(array_2) AS a2 WITH OFFSET
USING(OFFSET)
Run Code Online (Sandbox Code Playgroud)