使用BigQuery LegacySQL处理数组

时间:2018-02-07 14:37:44

标签: google-bigquery legacy-sql

我表格中的每一行都有一个数组字段,我想从第一个数组条目中获取一个字段。

例如,如果我的行是

var obj = {
            selected: function () {
              return this.value === someVariable;
            }
          }

var myObject = {
    propery1: Object.create(obj,{                    
        value: {
           value : 1,
           enumerable : true
        }       
    }),
    propery2: Object.create(obj,{

        value: {
           value : 2,
           enumerable : true
        }                
    })
};

我想

user_id:123,content_group:my_group,timestamp_1517584420597000

1 个答案:

答案 0 :(得分:3)

正如Elliott所说 - BigQuery Standard SQL对ARRAYs的支持要比传统SQL好得多。一般来说,BigQuery团队建议使用标准SQL

因此,下面是BigQuery Standard SQL(包括处理通配符)

   
#standardSQL
SELECT 
  user_dim.user_id AS user_id,
  (SELECT value.value.string_value 
     FROM UNNEST(user_dim.user_properties) 
     WHERE key = 'content_group' LIMIT 1
  ) content_group,
  (SELECT event.timestamp_micros 
     FROM UNNEST(event_dim) event 
     WHERE name = 'main_menu_item_selected'
  ) ts
FROM `project.dataset.app_events_*`
WHERE _TABLE_SUFFIX BETWEEN '20180129' AND '20180202'   

结果(对于您问题中的虚拟示例)

Row     user_id     content_group       ts   
1       123         my_group            1517584420597000