BigQuery 等同于 COALESCE()?

BigQuery equivalent of COALESCE()?

我正在将一些聚合查询从 Postgres 转换到我们在 BigQuery 中的新架构。 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 等效语句?

您可以在BigQuery中使用IFNULL函数,可以像这样嵌套:

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

P.S。但是 BigQuery 中省略 COALESCE 是一个疏忽,我会修复它。

更新: 自 2015 年 4 月 16 日起,COALESCE 在 BigQuery 中可用。 https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#conditional_expressions