操纵配置单元变量

9udxz4iz  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(307)

我想从传递的配置单元变量中减去一个数字。例如:

SET hiveconf:window_size = 12
SELECT id , max(marks) OVER(ORDER BY Date_time ROWS BETWEEN ${hiveconf:window_size}-1 PRECEDING AND CURRENT ROW) from Students;

但是 ${hiveconf:window_size}-1 在窗口中函数给出错误。
有人能提供一些建议吗。

iq0todco

iq0todco1#

它不喜欢边界之间行的内联计算。执行查询前减去1。
这将起作用:

SET hiveconf:window_size=11;
SELECT id , max(marks) OVER(ORDER BY Date_time ROWS BETWEEN ${hiveconf:window_size} PRECEDING AND CURRENT ROW) from Students
;

或者,您可以在shell中计算它,并将其作为变量传递给配置单元脚本。请参见如何从shell传递变量:https://stackoverflow.com/a/37821218/2700344

相关问题