在 BigQuery 中展平嵌套层次结构
Posted
技术标签:
【中文标题】在 BigQuery 中展平嵌套层次结构【英文标题】:Flattening nested hierarchies in BigQuery 【发布时间】:2013-04-21 19:42:01 【问题描述】:我有一个 BigQuery 表,其中包含两个嵌套级别的重复字段层次结构。 我需要在内部级别的叶字段上进行自连接(将表与自身连接)。
使用 FLATTEN 子句只会变平一个级别,我不知道如何做到这一点。 理论上我需要编写嵌套的 FLATTEN,但我无法完成这项工作。
任何帮助将不胜感激。
例子:
给定以下表结构:
a1,整数 a2、记录(重复) a2.b1,整数 a2.b2,记录(重复) a2.b2.c1,整数
如何编写一个在 a2.b2.c1 两侧进行自联接(加入每个)的查询。
【问题讨论】:
【参考方案1】:嵌套的扁平化——即子查询的扁平化——应该可以工作。请注意,它需要过多的括号。 给定架构:
nested_repeated_f: [ inner_nested_repeated_f:[ string_f]]
以下查询将起作用:
SELECT t1.f1 FROM (
SELECT nested_repeated_f.inner_nested_repeated_f.string_f as f1
FROM (FLATTEN((
SELECT nested_repeated_f.inner_nested_repeated_f.string_f
FROM
(FLATTEN(lotsOdata.nested002, nested_repeated_f.inner_nested_repeated_f))
), nested_repeated_f))) as t1
JOIN (
SELECT nested_repeated_f.inner_nested_repeated_f.string_f as f2
FROM (FLATTEN((
SELECT nested_repeated_f.inner_nested_repeated_f.string_f
FROM
(FLATTEN(lotsOdata.nested002, nested_repeated_f.inner_nested_repeated_f))
), nested_repeated_f))) as t2
on t1.f1 = t2.f2
【讨论】:
使用具体查询示例更新响应。以上是关于在 BigQuery 中展平嵌套层次结构的主要内容,如果未能解决你的问题,请参考以下文章