【发布时间】:2017-12-06 11:51:28
【问题描述】:
在 BigQuery 中,我如何转置这些记录:
fruit | color | aA | aB | aC
--------+--------+------------+------------+------------
apple | green | [10,11] | [12,13] | [14,15]
orange | orange | [20,21,22] | [23,24,25] | [26,27,28]
到:
fruit | color | A | B | C
--------+--------+----+----+----
apple | green | 10 | 12 | 14
apple | green | 11 | 13 | 15
orange | orange | 20 | 23 | 26
orange | orange | 21 | 24 | 27
orange | orange | 22 | 25 | 28
在 PrestoDB/Athena 或 PostgreSQL 中,我会使用带有多个参数的 UNNEST,但 BigQuery 不支持它。
CROSS JOIN UNNEST(aA, aB, aC) AS t(A, B, C)
注意:
- 一行中的所有数组都具有相同的长度;
- 不同记录的数组长度可能不同。
便签本:
#standardSQL
WITH arrays AS (
SELECT 'apple' AS fruit, 'green' AS color, [10,11] AS aA, [12,13] AS aB, [14,15] AS aC UNION ALL
SELECT 'orange' AS fruit, 'orange' AS color, [20,21,22] AS aA, [23,24,25] AS aB, [26,27,28] AS aC
)
SELECT * FROM arrays
提前致谢。
【问题讨论】:
标签: arrays google-bigquery transpose