2013-04-21 88 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