【问题标题】:BigQuery: Flattening all repeated fields in nested schemaBigQuery:展平嵌套架构中的所有重复字段
【发布时间】:2019-02-28 12:35:29
【问题描述】:

我在从 Big Query 的嵌套架构中查询时遇到了很多麻烦。 我有以下字段。

我想把桌子弄平,得到这样的东西。

用户 |问题ID |用户选择

123 | 1 | 1

123 | 1 | 2

123 | 1 | 3

123 | 1 | 4

从其他资源中,我可以从重复列中的一条记录中进行查询。如:

SELECT 用户,dat.question_id FROM 表名,UNNEST(data) dat

它给了我这个结果。

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

SELECT user, dat.question_id, dat.user_choices FROM tablename, UNNEST(data) dat

谁能帮助我如何正确地 UNNEST 这个表,以便我可以为所有数据项提供扁平化架构?

谢谢!

【问题讨论】:

    标签: google-bigquery bigquery-standard-sql unnest


    【解决方案1】:

    以下是 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    
    

    【讨论】:

    • 如果有帮助,请考虑对答案进行投票:o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2019-06-12
    • 2013-03-24
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多