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團隊宣佈新功能的地方。 –
它是針對發行說明提出的,但尚未發佈。 –