在 Big Query 中将多个列嵌套到一个数组中

Sha*_*ian 5 google-bigquery

给定这个 BQ 表 烧烤桌 在此输入图像描述

有 1.026 行,有 944 个唯一的 modemio_cat_ids

如何返回一个查询,将每个 modemio_cat_id 的所有非空列嵌套到1 个名为“parents”的单个数组中?

示例:对于 modemio_cat_id = 1111118

将 catx_id 嵌套到父级中

然后最后按 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
Run Code Online (Sandbox Code Playgroud)

Mik*_*ant 11

以下是 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
Run Code Online (Sandbox Code Playgroud)