hive嵌套if使用场景

工作遇到一个场景是,给表导入数据,其中字段 filed1 与 field2 的赋值比较复杂:

  1. 如果 field1 满足条件等于C11,则 field1 赋值为 V11 且 field2 赋值为 V21;
  2. 表数据的 field2 内容正则替换为 V22;
  3. 如果field1 满足条件等于 V11,则 field1 赋值为 V12 且 field2 赋值为 V23。

流程图如下:
在这里插入图片描述
hql语句可写为:

select 
	if(if(field1=C11, V11, field1)=V11, V12, V23) as field1,
	if(field1=V11, V23(V22(if(field1=C11, V21, field2))),V22(if(field1=C11, V21, field2))) as field2
from tableA;

梳理后就发现刚刚写的是:

if(field1=V11, V23(V22(if(field1=C11, V21, field2))),field2 ) as field2
--而不是
if(field1=V11, V23(V22(if(field1=C11, V21, field2))),V22(if(field1=C11, V21, field2))) as field2

再一次体会到梳理的益处!!

猜你喜欢

转载自blog.csdn.net/AnlaGodness/article/details/105735863
今日推荐