coalesce

New in version 1.30.21.

语法

coalesce(X1, X2, args…)

参数

X1 标量或向量。

X2X1 类型相同的标量/向量。若 X1 为标量,X2 只能为标量;若 X1 为向量,X2 可以为非空的标量,也可以为与 X1 等长的向量。

args 可选参数,参数说明同 X2

详情

根据给定的数据,填充原始数据中的空值,返回一个和原始数据等长的标量/向量。

注:支持在分布式查询中使用。

计算规则

逐一检查 X1 中的元素:

  • 若非空,则直接返回。

  • 若为空,则检查 X2 中相同位置的元素是否为空;若为空,则按照相同的规则检查后续 args 中相同位置的元素是否为空,直到找到第一个非空值并返回,若找不到则返回空。

使用场景

  • 将表的多列合并为一列。

  • 替代复杂的 case 表达式:select coalesce (expr1, expr2, 1) from t 等效于 select case when vol1 is not null then vol1 when vol2 is not null then vol2 else 1 end from t

例子

$ coalesce(int(NULL), int(NULL), 1, 3)
1

$ coalesce(-1 NULL 4 3, NULL 2 NULL 1, 1 4 5 2)
[-1,2,4,3]

$ vol1 = [3.3, 2.2, 2.1, NULL, 1.2]
$ vol2 = [NULL, 1.8, 1.9, 2.3, 3.2]
$ sym = `a`a`b`a`c
$ t = table(sym, vol1, vol2)

$ select sym, coalesce(vol1, vol2) as vol from t

sym,vol
a,3.3
a,2.2
b,2.1
a,2.3
c,1.2