2015-04-04 49 views
4

我正在將一些來自Postgres的聚合查詢轉換爲BigQuery中的新體系結構。 BigQuery中是否有等價的COALESCE()?BigQuery等價於COALESCE()?

目前,我將一個Postgres查詢語句像

coalesce(column1,'DEFAULT') 

CASE 
    WHEN column1 IS NOT NULL 
    THEN column1 
    ELSE 'DEFAULT' 
END AS column1 

這似乎很容易。

但是轉換Postgres的查詢語句嵌套的聚結之類的語句

count(distinct coalesce(
       coalesce(
       coalesce(column1,column2), 
           column3), 
           column4))) 

如果我用CASE語句所有的地方會得到更多的凌亂,也似乎是錯誤的做法。

是否BigQuery有一個等價於COALESCE()的方法,還是我堅持寫整個CASE語句等效?

回答

10

您可以使用BigQuery的IFNULL功能,它可以被嵌套這樣的:

select ifnull(column1, 
       ifnull(column2,'DEFAULT')) 
from 
(select string(NULL) as column1, 'y' as column2) 

附:但是在BigQuery中忽略COALESCE是一個疏忽,我會解決它。

更新:截至2015年4月16日,COALESCE在BigQuery中可用。

+0

謝謝,這似乎工作。 任何想法何時將'COALESCE()'函數實現到BigQuery中? – 2015-04-07 03:18:54

+1

從今天起實施:) – 2015-04-17 01:42:27

+0

謝謝!我將把它實現到我們的代碼中。 – 2015-04-18 16:36:37