BigQuery 文档 - 为什么展平删除重复
BigQuery documentation - Why does flatten remove repetition
我目前正在学习 BigQuery 标准 SQL。
我已经遵循了有关如何使用旧版 SQL、here and here.
展平数据的示例
扁平化数据生成具有相似行的堆叠数据是有道理的。
但是,在描述从旧版 SQL 迁移到标准 SQL 的文档中,它描述了如何执行相同的展平操作。 sub-heading 称为 Removing Repitition with Flatten。
有人可以给我解释一下吗?看起来 flatten 通过将嵌套数据转换为堆叠数据来生成数据重复,我觉得我不了解一些基本的东西。
被删除的 "repetition" 是某个特定的列。假设您有如下所示的数据,其中 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
的值在各行中重复,但我们已将重复的内容展平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;
本例显示"flattening"后的数据 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 AS t,
t.z AS z;
我目前正在学习 BigQuery 标准 SQL。
我已经遵循了有关如何使用旧版 SQL、here and here.
展平数据的示例扁平化数据生成具有相似行的堆叠数据是有道理的。
但是,在描述从旧版 SQL 迁移到标准 SQL 的文档中,它描述了如何执行相同的展平操作。 sub-heading 称为 Removing Repitition with Flatten。
有人可以给我解释一下吗?看起来 flatten 通过将嵌套数据转换为堆叠数据来生成数据重复,我觉得我不了解一些基本的东西。
被删除的 "repetition" 是某个特定的列。假设您有如下所示的数据,其中 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
的值在各行中重复,但我们已将重复的内容展平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;
本例显示"flattening"后的数据 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 AS t,
t.z AS z;