我正在学习BigQuery标准SQL。
我已经按照如何使用旧版SQL here和here展平数据的示例。
将数据展平生成具有相似行的堆叠数据是有道理的。
但是,在描述从旧版SQL迁移到标准SQL的文档中,它描述了如何执行相同的展平操作。此子标题称为Removing Repitition with Flatten。
有人可以向我解释一下吗?看似flatten通过将嵌套数据转换为堆叠数据来生成重复数据,我觉得我不理解基本的东西。
答案 0 :(得分:1)
被删除的“重复”是某个特定列。假设您的数据如下所示,其中x
和y
的类型为INT64
,z
为ARRAY<INT64>
:
x y z
-----------------
1 2 [3, 4, 5]
6 7 [8, 9]
在这种情况下展平意味着删除重复的z
,这样您最终只能在输出中使用INT64
列类型而不使用ARRAY
类型,这会将数据转换为以下内容形状:
x y z
---------
1 2 3
1 2 4
1 2 5
6 7 8
6 7 9
请注意,我们实际上是添加重复,因为x
和y
的值在行间重复,但我们已经将{{1}的重复结构弄平了}}。在查询表单中,您可以尝试以下示例。第一个只显示数据的初始形状:
z
此示例显示“展平”WITH Input AS (
SELECT 1 AS x, 2 AS y, [3, 4, 5] AS z UNION ALL
SELECT 6, 7, [8, 9]
)
SELECT x, y, z
FROM Input;
后的数据:
z