将多列嵌套到Big Query中的数组中

时间:2018-09-15 23:05:21

标签: google-bigquery

给出此BQ表 BQ Table enter image description here

存在1.026行,其中包含944个唯一的modemio_cat_ids

如何返回将所有非null列嵌套到 1个单个数组的查询中,该查询称为每个modemio_cat_id的“父母”?

示例:对于modemio_cat_id = 1111118

nested catx_id into parent

,然后最后按modemio_cat_id分组,并在出现重复的情况下累积所有数组

错误的方法:此查询始终为每个modemutti_cat_id返回相同的数组:

SELECT modemio_cat_id, ARRAY (
  SELECT AS STRUCT cat1_id, cat2_id FROM `modemutti-8d8a6.categorization.test`
  ) as parent
FROM `modemutti-8d8a6.categorization.test` 
group by modemio_cat_id

1 个答案:

答案 0 :(得分:2)

以下BigQuery标准SQL示例

#standardSQL
SELECT modemio_cat_id, 
  ARRAY_AGG(DISTINCT cat_id IGNORE NULLS) parents
FROM `modemutti-8d8a6.categorization.test`,
  UNNEST([cat1_id, cat2_id, cat3_id, cat4_id, cat5_id, cat6_id]) cat_id
GROUP BY modemio_cat_id