coalesce
New in version 1.30.21.
语法
coalesce(X1, X2, args…)
参数
X1 标量或向量。
X2 与 X1 类型相同的标量/向量。若 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