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
我正在将一些聚合查询从 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