BigQuery-如何取消嵌套多个数组,以及如何从一列分配值?

时间:2019-02-06 18:56:55

标签: google-bigquery

我有一个包含多个数组的表,以及一个像键一样的列:

enter image description here

问题是如何取消嵌套此结构,以便每一行也获得rowkey值?

例如:

域,事件,...引荐来源网址也应该具有相同的行键吗?

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

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

但是遇到有关表名的问题:

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

1 个答案:

答案 0 :(得分:2)

目前尚不清楚表的确切模式,因此下面的示例(对于BigQuery Standard 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