【问题标题】:BigQuery - How to unnest multiple arrays, and distribute values from one column?BigQuery - 如何取消嵌套多个数组,并从一列分配值?
【发布时间】:2019-02-06 18:56:55
【问题描述】:

我有一个包含多个数组的表,其中一列就像一个键:

问题是如何取消嵌套这个结构,让每一行也获得rowkey值?

例如:

domain、event、...referrer 也应该有相同的 rowkey?

基本上尝试在整个表上使用 unnest。

SELECT
  *
FROM
  UNNEST(`table.bigtable_analytics.frontend`)
LIMIT
  1000

但是遇到了关于表名的问题:

无法识别的名称:table.bigtable_analytics.frontend at [4:10]

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    不清楚您的表到底是什么架构,因此下面的示例(对于 BigQuery 标准 SQL)仅使用简化的架构来介绍完成您所要求的方法:each row also gets the rowkey value

    简化的虚拟数据是:

    Row     rowkey  column.name column.value     
    1       key1    domain      aaa.com  
                    event       pageload     
                    hash        12345    
    2       key2    domain2     aaa2.com     
                    event2      pageload2    
                    hash2       123456789     
    
    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'key1' rowkey, [STRUCT<name STRING, value STRING>('domain', 'aaa.com'), STRUCT('event', 'pageload'), STRUCT('hash', '12345')] column UNION ALL
      SELECT 'key2', [STRUCT<name STRING, value STRING>('domain2', 'aaa2.com'), STRUCT('event2', 'pageload2'), STRUCT('hash2', '123456789')]
    )
    SELECT rowkey, x.*
    FROM `project.dataset.table` t, t.column x 
    

    结果为

    Row rowkey  name    value    
    1   key1    domain  aaa.com  
    2   key1    event   pageload     
    3   key1    hash    12345    
    4   key2    domain2 aaa2.com     
    5   key2    event2  pageload2    
    6   key2    hash2   123456789    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2020-08-16
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多