【问题标题】:Flattening nested hierarchies in BigQuery在 BigQuery 中展平嵌套层次结构
【发布时间】:2013-04-21 19:42:01
【问题描述】:

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

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

任何帮助将不胜感激。

例子:

给定以下表结构:

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

如何编写一个在 a2.b2.c1 两侧进行自联接(加入每个)的查询。

【问题讨论】:

    标签: google-bigquery


    【解决方案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
    

    【讨论】:

    • 使用具体查询示例更新响应。
    猜你喜欢
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多