操纵蜂巢变量

时间:2018-08-14 11:10:00

标签: hive hiveql

我想从传递的蜂巢变量中减去一个数字。例如:

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给出了错误。

任何人都可以对此提供任何建议。

1 个答案:

答案 0 :(得分:1)

它不喜欢ROWS BETWEEN边界的内联计算。在执行查询之前先减去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
;

或者,您可以在外壳中对其进行计算,然后将其作为变量传递给Hive脚本。请参阅此处如何从外壳传递变量:https://stackoverflow.com/a/37821218/2700344