配置单元:如何在查询中传递配置单元变量

6vl6ewon  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(382)

我正在尝试使用下面的查询设置hivevar。但是当我在以后的查询中使用它时,它无法检测到日期。

set hivevar:curr_date = select date_sub(max(partition_date), 1) from mytable;
select * from mytable where partition_date = '${curr_date}' limit 10;
No Results

但是,当我硬编码hivevar时,它就工作了

set hivevar:curr_date = '2017-03-11';
select * from mytable where partition_date = '${curr_date}' limit 10;

结果:

partition_date  cookie  userid  value
2017-03-11  015ABF9C4C6601016574F15E684C8F14    b1a19464f74d6   Melrose
osh3o9ms

osh3o9ms1#

配置单元变量不过是一种文本替换机制。
替换是在解析和执行之前完成的。

hive> set hivevar:v1=se;
hive> set hivevar:v2=l;
hive> set hivevar:v3=ec;
hive> set hivevar:v4=t 1+;
hive> set hivevar:v5=2;
hive> ${hivevar:v1}${hivevar:v2}${hivevar:v3}${hivevar:v4}${hivevar:v5};
OK
3

可以通过shell将查询结果作为参数传递给另一个查询,例如-

hive --hivevar x=$(hive -e 'select 1+2') -e 'select ${hivevar:x}*100'

相关问题