我在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“最大”位置
我可以对所有表使用多个where子句以及包含“从表中选择max(year)”的子查询,但这似乎并不可行。关于如何实现这一目标的任何想法?
更新 我在以下条件下尝试了where子句,但where子句中似乎仅支持一个suq查询。不确定如何解决此问题。感谢任何对此的投入
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
答案 0 :(得分:0)
修改版本:
select
<columns>
from
(
select
<columns>
from
table1 a
where a.year in (select max(year) from table1)
) a1
left join
(
select
<columns>
from
table2 b
where b.year in (select max(year) from table2)
) b1 on a1.ID = b1.ID
left join
(
select
<columns>
from
table3 c
where c.year in (select max(year) from table3)
) c1 on a1.ID = c1.ID
;