首页 > 解决方案 > BigQuery:从数组创建表

问题描述

我想创建一个包含来自两个不同数组的两列的表。

数组 1:[1,2,3]

数组 2:[11,12,13]

所需表:

两列,三行

通过使用这个查询,我得到了 1 行

SELECT 
[1,2,3] AS S1,
[11,12,13] AS S2

1 行 2 列

我尝试了 UNNEST,但得到了笛卡尔积

SELECT S1, S2
FROM 
UNNEST([1,2,3]) AS S1,
UNNEST([11,12,13]) AS S2

2 列,9 行 - 笛卡尔积

如何从数组创建所需的表(图 1)?

谢谢

标签: sqlgoogle-bigquerybigdata

解决方案


一种方法使用连接和WITH OFFSET

SELECT S1, S2, o1, o2
FROM UNNEST([1, 2, 3]) s1 WITH OFFSET o1 LEFT JOIN
     UNNEST([11, 12, 13]) S2 WITH OFFSET o2
     ON o1 = o2;

UNNEST()如果BigQuery 像其他一些数据库那样支持多个参数,那就太好了。


推荐阅读