0

我有一个提供 max_processed_date 的查询(它提供单个值),并且该日期用于从 master_table 获取数据。我正在使用 hivevars 来执行此操作,但它直接替换查询而不是首先评估它。

set hivevar max_date= select max_processed_date from Tab_date where process='X';

select * from master_table where process_date > ${hivevar:max_date}

但这表现为select * from master_table where process_date > select max_processed_date from Tab_date where process='X';

hiveql 不支持。是否可以先评估 hivevar 并且可以在 master_table 查询中使用该值?

4

1 回答 1

0

上面提到的答案(HiveQL:使用查询结果作为变量)可用于使用 Shell 脚本包装器将查询结果放入变量中。但是对于您的特定问题,您可以执行以下操作:

select a.* 
from master_table as a,
  (select max_processed_date from Tab_date where process='X') as b
where a.process_date > b.max_processed_date;

请注意,内部查询应该是 1 行,否则这会炸毁最终表。distinct如果代码逻辑需要,选择语句中的A可以解决它。

于 2020-07-09T18:48:37.713 回答