我正在将一些聚合查询从 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)
附言但是在 BigQuery 中省略 COALESCE 是一个疏忽,我会修复它。
更新:自 2015 年 4 月 16 日起,BigQuery 中可以使用 COALESCE。
https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#conditional_expressions
关于google-bigquery - BigQuery 相当于 COALESCE()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443450/