如何将查询结果存储到 HiveQL 中的变量中,然后在另一个 select 语句中使用它



如何将查询结果存储到 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

你不能只通过 hive 来做到这一点。

如果配置单元查询由外部脚本(如 shellpython)控制。您可以执行第一个查询,获取输出,然后将其放入下一个 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 

最新更新