低于范围查询,加入在llap中工作正常,但在Hiveserver2 / Hive.CLI中没有。
请建议如何在Hive中使用范围连接查询。
Hive版本:1.2.1.2.6
HDP版本:2.6.0.3
查询:
select * from datahub.cgs_tmp_gre gre
INNER JOIN datahub.cgs_tmp_cgsrxclm_ev_ba ba
ON gre.guar_key = ba.guar_key and gre.serviced_dte = ba.serviced_dte
AND gre.ts between ba.obsv_start_ts and ba.obsv_stop_ts
AND gre.ts between ba.obsv_start_ts and ba.obsv_stop_ts
AND gre.phcy_claim_id=2;
以下是我们在hive CLI或hive服务器2中运行时抛出的错误:
错误:编译语句时出错:FAILED:SemanticException第0行:-1在JOIN' obsv_stop_ts'中遇到左右别名(状态= 42000,代码= 40000)
答案 0 :(得分:0)
此错误是因为您有两次相同的join
条件。 between
解析为>=
和<=
,join
条件(版本2.2.0之前)不支持不等式。将条件移动到where
子句,它应该可以工作。
select * --specify required columns rather than *
from datahub.cgs_tmp_gre gre
INNER JOIN datahub.cgs_tmp_cgsrxclm_ev_ba ba
ON gre.guar_key = ba.guar_key and gre.serviced_dte = ba.serviced_dte
WHERE gre.ts >= ba.obsv_start_ts and gre.ts <= ba.obsv_stop_ts --replaced between with >= and <=
AND gre.phcy_claim_id=2;