【发布时间】:2019-08-27 13:59:00
【问题描述】:
我想取第一个非缺失值:
它不能正常工作
,coalesce(var1,var2,var3)
虽然
var1=null
var2=null
var3=variable
由于合并,我得到了 null。
【问题讨论】:
我想取第一个非缺失值:
它不能正常工作
,coalesce(var1,var2,var3)
虽然
var1=null
var2=null
var3=variable
由于合并,我得到了 null。
【问题讨论】:
两种可能性。首先是三个都是null。您可以通过添加第四个默认值来测试它是否被选中。
我怀疑是第二种可能性——null 真的是'null'。如果是这样,coalesce() 将无法直接工作。
如果是这种情况,您可以使用nullif() 或case 表达式:
coalesce(case when var1 <> 'null' then var1 end),
case when var2 <> 'null' then var2),
var3)
【讨论】:
nullif() 是几种 SQL 方言中CASE 表达式的简写。在 Hive 中,使用 COALESCE(CASE WHEN var1 = 'null' THEN NULL ELSE var1 END,CASE WHEN var2 = 'null' THEN NULL ELSE var2...etc. 你会明白为什么简写很好,但是由于 Hive 不支持快捷方式,所以功能是一样的。