我想从传递的蜂巢变量中减去一个数字。例如:
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
给出了错误。
任何人都可以对此提供任何建议。
答案 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