我目前正在使用一个关于BigQuery的非常简单的表,每行有两个重复的列class_numbers
[REPEATED INTEGER]
和class_descriptions
[REPEATED STRING]
,这两个重复属性都相同长度和每个索引的对应关系,例如:对于给定的记录class_numbers[1]
描述将在class_descriptions[1]
上。
我需要做的是基本上在平面表中转换这两个重复的字段,保持两列之间的对应关系,我该如何实现呢?
使用标准SQL的SELECT class_numbers, class_descriptions FROM test.mytable
返回相同的表(带有重复的字段)并在遗留SQL上执行相同的操作会引发错误“无法同时输出多个独立重复的字段。”。
如何达到预期效果?
谢谢,
答案 0 :(得分:2)
使用标准SQL,您可以使用UNNEST(...) WITH OFFSET
。例如,
SELECT
class_number,
class_descriptions[OFFSET(off)] AS class_description
FROM MyTable,
UNNEST(class_numbers) AS class_number WITH OFFSET off;
答案 1 :(得分:1)
以下是BigQuery Legacy SQL的版本
SELECT
class_number,
class_description
FROM (
SELECT
class_number,
number_pos,
class_descriptions AS class_description,
POSITION(class_descriptions) AS description_pos
FROM FLATTEN((
SELECT
class_numbers AS class_number,
POSITION(class_numbers) AS number_pos,
class_descriptions
FROM YourTable
), class_numbers)
)
WHERE number_pos = description_pos