我想执行基于区域检查的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
"
我知道这是重复的,但目前这是我们为执行不同区域/块的查询而实现的