我需要将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)
尝试如果:
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)
| 归档时间: |
|
| 查看次数: |
3087 次 |
| 最近记录: |