我有一个BigQuery表,其中包含两个嵌套级别的重复字段层次结构。 我需要在内层的叶子字段上进行自联接(将表连接起来)。
使用FLATTEN子句只会使一个级别变平,我无法弄清楚如何执行此操作。 从理论上讲,我需要编写嵌套的FLATTEN,但我无法做到这一点。
任何帮助都将不胜感激。
示例:
给出以下表结构:
a1,整数 a2,记录(重复) a2.b1,整数 a2.b2,记录(重复) a2.b2.c1,整数
如何在a2.b2.c1上编写一个自我连接(每个连接)的查询。
答案 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