ARRAY_AGG 与 STRUCT - 忽略 NULL

apk*_*ith 3 google-bigquery

我需要将STRUCTs 聚合到一个数组中,其中 中的两个字段STRUCT可以为空(它们要么都为空,要么都不为空)。IGNORE NULLS在函数中使用ARRAY_AGG不起作用 - 有没有办法从结果数组中取出这些空行?

我的桌子看起来像这样:

在此输入图像描述

我希望我的输出看起来像这样,但排除STRUCTs 中的空值:

在此输入图像描述

如果标签、语言或 dtk 没有值,我仍然想包含该行,但使用空白数组 - 这意味着我无法预过滤空值,因为这将导致行被排除。

我当前用于获取此输出的查询如下所示:

SELECT
  ARRAY_AGG(STRUCT(label, language_name) IGNORE NULLS) AS label,
  ARRAY_AGG(DISTINCT dtk IGNORE NULLS) AS dtk,
  country_name, category, age_group, gender
FROM
  categoryData
GROUP BY
  country_name, category, age_group, gender
Run Code Online (Sandbox Code Playgroud)

Ser*_*ron 6

尝试如果

SELECT
  ARRAY_AGG(if(label is not null or language_name is not null, struct(label, language_name), null) IGNORE NULLS) AS label,
  ARRAY_AGG(DISTINCT dtk IGNORE NULLS) AS dtk,
  country_name, category, age_group, gender
FROM
  categoryData
GROUP BY
  country_name, category, age_group, gender
Run Code Online (Sandbox Code Playgroud)