ARRAY_AGG聚合函数包含NULLs在它构建的数组中.当此类数组是查询结果的一部分时,查询失败并显示错误:
数组不能有null元素; 写作领域的错误
即以下查询演示它:
#standardSQL
SELECT ARRAY_AGG(x) FROM UNNEST([1,NULL,2,3]) x
Run Code Online (Sandbox Code Playgroud)
我们怎么解决呢?
Mos*_*sky 14
很高兴你问!BigQuery 在某些聚合函数中支持IGNORE NULLS和RESPECT NULLS修饰,包括ARRAY_AGG,因此您的查询变为
#standardSQL
SELECT ARRAY_AGG(x IGNORE NULLS) FROM UNNEST([1,NULL,2,3]) x
Run Code Online (Sandbox Code Playgroud)
它通过生产[1,2,3].更多细节在文档中.
另一个有趣的用例是,如果您不想丢失 NULL 元素,而是想用一些默认值替换它。例如-999
下面将执行此操作
#standardSQL
SELECT ARRAY_AGG(IFNULL(x,-999)) FROM UNNEST([1,NULL,2,3]) x
Run Code Online (Sandbox Code Playgroud)
如果您只想要不同的元素 -
#standardSQL
SELECT ARRAY_AGG(DISTINCT IFNULL(x,-999)) FROM UNNEST([1,NULL,2,3,1,NULL]) x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4019 次 |
| 最近记录: |