ARRAY_AGG集合函数包括NULLs
在它构建的数组中。当这种阵列是查询结果的一部分,查询失败,错误:如何从ARRAY中排除NULL,以便查询不会失败
Array cannot have a null element; error in writing field
即下面的查询演示了:
#standardSQL
SELECT ARRAY_AGG(x) FROM UNNEST([1,NULL,2,3]) x
怎样才能解决呢?
ARRAY_AGG集合函数包括NULLs
在它构建的数组中。当这种阵列是查询结果的一部分,查询失败,错误:如何从ARRAY中排除NULL,以便查询不会失败
Array cannot have a null element; error in writing field
即下面的查询演示了:
#standardSQL
SELECT ARRAY_AGG(x) FROM UNNEST([1,NULL,2,3]) x
怎样才能解决呢?
很高兴你问了! BigQuery支援中的一些聚合函数,包括ARRAY_AGG
IGNORE NULLS
和RESPECT NULLS
改性剂,所以你的查询变得
#standardSQL
SELECT ARRAY_AGG(x IGNORE NULLS) FROM UNNEST([1,NULL,2,3]) x
,并将其传递生产[1,2,3]
。更多详情请见documentation。
另一个有趣的用例是如果你不想丢失那些NULL元素,而是想用一些默认值替换它。例如-999
下面将做到这一点
#standardSQL
SELECT ARRAY_AGG(IFNULL(x,-999)) FROM UNNEST([1,NULL,2,3]) x
而且万一要是你想只不同的元素 -
#standardSQL
SELECT ARRAY_AGG(DISTINCT IFNULL(x,-999)) FROM UNNEST([1,NULL,2,3,1,NULL]) x
为什么我没有看到这个在[发行说明] (https://cloud.google.com/bigquery/docs/release-notes)?我认为这就是BigQuery团队宣布新功能的地方。 –
它是针对发行说明提出的,但尚未发布。 –