2013-04-21 84 views
1

我有一个BigQuery表,具有两个嵌套级别的重复字段层次结构。 我需要在内层的叶字段上进行自联接(将表与自身结合)。拼合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 
+0

问题与一个小例子编辑。谢谢 – user2227402 2013-04-22 18:52:36

+0

更新了具体查询示例的响应。 – 2013-04-23 22:51:21