Hive 根据条件设置配置单元变量

Hive 根据条件设置配置单元变量,hive,bigdata,data-ingestion,Hive,Bigdata,Data Ingestion,我想根据条件设置配置单元变量。我不确定这在HQL中是否可能,如果可能,那么如何实现 我想做这样的事情 if ${hiveconf:work}==1 then do set q1 = 4; set yr2 = eval(${hiveconf:year}-1); set q3= 3; end else if ${hiveconf:work}==2 then do set q2 = 4; set yr1 = eval(${hiveconf:year}-2);

我想根据条件设置配置单元变量。我不确定这在HQL中是否可能,如果可能,那么如何实现

我想做这样的事情

if ${hiveconf:work}==1 then do
    set q1 = 4;
    set yr2 = eval(${hiveconf:year}-1);
    set q3= 3;
end
else if ${hiveconf:work}==2 then do
    set q2 = 4;
    set yr1 = eval(${hiveconf:year}-2);
    set q4= 2;
end

任何帮助和知识都将不胜感激。

您可以根据${hiveconf:work}尝试在请求中使用CASE语句,而不是settring变量。好的。所以你要像下面这样转换它:
case当${hiveconf:work}=1,然后q1=4当${hiveconf:work}=1,然后yr2=eval(${hiveconf:year}-1),当${hiveconf:work}=1,然后q3=3;否则当${hiveconf:work}=2,然后q2=4当${hiveconf:work hiveconf:work}=2,然后yr2=eval(${hiveconf:year}-2);结束

我对此有两个疑问:1。我主要在SELECT语句中见过用例。那么,仅仅设置变量就可以这样工作吗?2.使用${hiveconf:work}=1的这种冗余可以最小化吗?还有一个问题。可以在下面的case语句中设置变量吗<代码>-当${hiveconf:quarte2}=3然后设置q2=1No时,我的意思是不要使用变量y1、q2和q4,并使用CASE语句调整其余代码扫描您添加设置变量后要运行的查询?