google-bigquery - BigQuery 相当于 COALESCE()?

标签 google-bigquery

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

相关文章:

java - Dataflow 如何与 BIgQuery 数据集配合使用

sql - 无法从表格中获取正确的日期

python - 从 oauth2client.appengine 导入 o​​auth2decorator_from_clientsecrets ImportError : No module named appengine

sql - 如何计算 Firebase Analytics 原始数据中的 session 和 session 持续时间?

mysql - 如何简化带有很多 “case when then else …” 的 sql

machine-learning - 将 Google ML Engine 与 BigQuery 结合使用?

permissions - 如何在 Google BigQuery 上设置特定数据集的权限?

google-bigquery - 在 Big Query 中从每个组中随机抽取样本

google-bigquery - 在 bigquery 中创建分区的外部表

node.js - 服务帐户是在 Node.js 中查询 google bigquery 的正确凭据吗?