如何在配置单元选择之外使用IF else语句



我想执行基于区域检查的select语句。如果区域值是HK,那么表应该从temp.temp1创建,否则必须使用temp.temp2创建。例如:

**beeline -e "
if [ '$REGION' == 'HK' ]
then
Create table region as Select * from temp.temp1;
else
Create table region as Select * from temp.temp2;
fi**
"**

有什么可行的方法吗?

Hive本身不支持if-else语句,有HPL/SQL过程扩展可能对您的情况有用。

不过,我建议您采用一种不同的方法:如果$REGION变量来自beeline之外,并且这些表的方案匹配,则可以将结果与相应的where情况联合:

create table region as 
select * 
from temp.temp1
where '$REGION' == 'HK'
union all 
select * 
from temp.temp2
where '$REGION' != 'HK'

Hive将建立执行计划并去掉其中一个联合部分,因此不会影响实际执行时间。

Yes-Hive it self不支持if else语句。我现在实现的是

if [ '$REGION' == 'HK' ]
then
beeline -e " Select * from temp.temp1; "
else
beeline -e " Select * from temp.temp2;"
fi
"

我知道这是重复的,但目前这是我们为执行不同区域/块的查询而实现的

最新更新