0

我目前正在学习 BigQuery 标准 SQL。

我在此处此处遵循了如何使用旧版 SQL 展平数据的示例。

展平数据生成具有相似行的堆叠数据是有道理的。

但是,在描述从 Legacy SQL 迁移到 Standard SQL 的文档中,它描述了如何执行相同的展平操作。对此的子标题称为使用 Flatten 去除重复

有人可以向我解释一下吗?似乎 flatten 通过将嵌套数据转换为堆叠数据来生成数据重复,我觉得我不理解一些基本的东西。

4

1 回答 1

1

被删除的“重复”是某个特定的列。假设您的数据看起来像这样, wherexyhas type INT64and zis an 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;

这个例子显示了“扁平化”之后的数据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;
于 2017-10-06T14:34:32.987 回答