【问题标题】:BigQuery equivalent of COALESCE()?BigQuery 相当于 COALESCE()?
【发布时间】:2015-06-09 05:00:03
【问题描述】:

我正在将一些聚合查询从 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 语句等效?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

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

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

    附:但是 BigQuery 中 COALESCE 的遗漏是一个疏忽,我会修复它。

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

    【讨论】:

    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多