我在 Hive 中有三个分区表(每年分区),所有表都有多个分区。作为我的要求的一部分,我将加入所有这三个表。现在我只想为最新的分区而不是之前创建的分区运行这个 sql。
我尝试在 where 子句中使用 max(partition) 但似乎不受支持
我做了类似下面的事情(不是确切的代码。只是一个代码概念)
select
a.*,
b.*,
c.*
from table1 a
left join table2 b on a.ID = b.ID
left join table3 c on a.ID = c.ID
where
a.year = max(a.year) and
b.year = max(b.year) and
c.year = max(c.year)
我收到了这个错误
失败:SemanticException [错误 10128]:第 108:23 行尚不支持 UDAF 'max' 的位置
我可以将多个 where 子句与包含“从表中选择 max(year)”的子查询一起用于所有表,但这似乎不可行。关于如何实现这一目标的任何想法?
更新 我尝试了具有以下条件的 where 子句,但似乎 where 子句中只支持一个 suq-query。不知道如何解决这个问题。感谢对此的任何投入
where
a.year in (select max(year) from table1) and
b.year in (select max(year) from table2) and
c.year in (select max(year) from table3