如何将查询结果存储到HiveQL中的变量中,然后在另一个select语句中使用它?
例如,每当我存储一个普通变量并在select语句中使用它时,它就可以正常工作。
SET a=1; SELECT CASE WHEN b > ${hiveconf:a} THEN NULL ELSE 1 from my_table
但是当我尝试将查询放入变量时,它似乎存储了查询而不是运行它并存储结果。这会导致错误。
SET a=SELECT MAX(num) FROM my_other_table; SELECT CASE WHEN b > ${hiveconf:a} THEN NULL ELSE 1 from my_table
错误是:cannot recognize input near 'select' 'max' '(' in select clause
有没有人知道这方面的工作?我正在使用Hive 0.13
答案 0 :(得分:2)
你只能通过蜂巢来做到这一点。
如果您的配置单元查询由shell
或python
等外部脚本控制。您可以执行第一个查询,获取输出,然后将其放在下一个sql中。
或者您可以更改您的sql以使用join
。您的示例代码可以更改为
select case when b > t.a then NULL else 1 from my_table
join (select max(num) a from my_other_table) t