1

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

FLATTEN 子句的使用只会使一个级别变平,我无法弄清楚如何做到这一点。理论上我需要编写嵌套的 FLATTEN,但我无法完成这项工作。

任何帮助,将不胜感激。

例子:

给定以下表结构:

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

如何编写一个查询,该查询在两侧的 a2.b2.c1 上执行自连接(每个连接)。

4

1 回答 1

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
于 2013-04-22T16:32:50.963 回答