在BigQuery中展平嵌套层次结构

时间:2013-04-21 19:42:01

标签: google-bigquery

我有一个BigQuery表,其中包含两个嵌套级别的重复字段层次结构。 我需要在内层的叶子字段上进行自联接(将表连接起来)。

使用FLATTEN子句只会使一个级别变平,我无法弄清楚如何执行此操作。 从理论上讲,我需要编写嵌套的FLATTEN,但我无法做到这一点。

任何帮助都将不胜感激。

示例:

给出以下表结构:

a1,整数 a2,记录(重复) a2.b1,整数 a2.b2,记录(重复) a2.b2.c1,整数

如何在a2.b2.c1上编写一个自我连接(每个连接)的查询。

1 个答案:

答案 0 :(得分: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