sql - 大查询 : Create a table from arrays

标签 sql google-bigquery bigdata

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

Array1: [1,2,3]

Array2: [11,12,13]

所需表:

two columns, 3 rows

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

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

1 row, 2 columns

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

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

2 columns, 9 rows - cartesian product

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

谢谢

最佳答案

一种方法使用连接和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;

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

关于sql - 大查询 : Create a table from arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51908047/

相关文章:

sql - informix 中的函数添加月份

csv - HIVE 因不工作而逃脱 '\\'

hadoop - 如何在 Pig 中按列删除重复项

hadoop - 选择Hadoop的传统数据库的数据量大小如何?

mysql - SQL:选择其他表中不存在的位置

mysql - 在一个行集中选择两个计数条件mysql

php - 如果 MySQL 连接或数据库的链接有错误,则打印

google-bigquery - 在 BigQuery 的标准 SQL 中使用句点 "."

google-bigquery - 如何在 Google BigQuery 中存储图像?

sql - 如何使用 BigQuery 关联子 ID 和父 ID