【问题标题】:Manipulating hive variable操作 hive 变量
【发布时间】:2018-08-14 11:09:59
【问题描述】:

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

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

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

【问题讨论】:

标签: hive hiveql


【解决方案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
;

或者,您可以在 shell 中计算它并作为变量传递给 Hive 脚本。请参阅此处如何从 shell 传递变量:https://stackoverflow.com/a/37821218/2700344

【讨论】:

  • 我们可以使用不同的 hive 变量从实际的 hive 变量中减去 1。例如:hiveconf:sub_one = ${hiveconf:window_size}-1
  • 然后在 ROWS BETWEEN 边界中传递 hiveconf:sub_one。
  • @RaviKiran 否。Hive 不计算变量并按原样替换它们。因此,在这种情况下,hiveconf:sub_one 将被解析为相同的${hiveconf:window_size}-1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多