代码之家  ›  专栏  ›  技术社区  ›  2D_

BigQuery:展平嵌套架构中的所有重复字段

  •  0
  • 2D_  · 技术社区  · 6 年前

    我在从Big Query的嵌套模式进行查询时遇到了很多麻烦。 我有以下字段。

    enter image description here

    用户|问题| id |用户|选择

    123 | 1 | 2

    123 | 1 | 3

    它给了我这个结果。 enter image description here

    但是当我这样做的时候,我又得到了一个重复的列。

    从tablename、UNNEST(data)dat中选择user、dat.question\u id、dat.user\u选项

    enter image description here

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  5
  •   Mikhail Berlyant    6 年前

    下面是BigQuery标准SQL

    #standardSQL
    SELECT user, question_id, choice 
    FROM `project.dataset.table`, 
      UNNEST(data) question, 
      UNNEST(user_choices) choice
    

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 1 user, 
        [STRUCT<question_id INT64, user_choices ARRAY<INT64>>
          (1,[1,2,3]),
          (2,[2,5]),
          (3,[1,3])
        ] data UNION ALL
      SELECT 2 user, 
        [STRUCT<question_id INT64, user_choices ARRAY<INT64>>
          (1,[2,3]),
          (2,[4,5]),
          (3,[2,6])
        ] data
    )
    SELECT user, question_id, choice 
    FROM `project.dataset.table`, 
      UNNEST(data) question, 
      UNNEST(user_choices) choice
    ORDER BY user, question_id, choice    
    

    有结果的

    Row user    question_id choice   
    1   1       1           1    
    2   1       1           2    
    3   1       1           3    
    4   1       2           2    
    5   1       2           5    
    6   1       3           1    
    7   1       3           3    
    8   2       1           2    
    9   2       1           3    
    10  2       2           4    
    11  2       2           5    
    12  2       3           2    
    13  2       3           6    
    
    推荐文章