hive执行两表join时,on非相等条件,报错:Both left and right aliases encountered in JOIN ‘1‘

文章讲述了在使用Hive进行SQL查询时,遇到JOIN操作中不支持非相等条件(如DATEDIFF不等于1)的问题。给出了从原始HQL到改进后的HQL的解决方案,即改变JOIN条件为等值连接并调整WHERE子句的逻辑。
摘要由CSDN通过智能技术生成

1 原始报错HQL

1.1 报错HQL

with single_trip as(
    select
        vin,
        start_soc,
        end_soc,
        start_mileage,
        end_mileage,
        start_timestamp,
        end_timestamp,
        dt
    from dws_electricity_single_trip_detail
    where substr(dt,1,7)='2023-09'
)
select
  *
from single_trip t1
left join single_trip tb2
on t1.vin=tb2.vin and DATEDIFF(t1.dt,tb2.dt)=1 

1.2 报错原因

hive执行JOIN时,不支持两个表的字段的非相等操作;
报错地方:

DATEDIFF(t1.dt,tb2.dt)=1 

2 解决方法

原始HQL

with single_trip as(
    select
        vin,
        start_soc,
        end_soc,
        start_mileage,
        end_mileage,
        start_timestamp,
        end_timestamp,
        dt
    from dws_electricity_single_trip_detail
    where substr(dt,1,7)='2023-09'
)
select
  *
from single_trip t1
left join single_trip tb2
on t1.vin=tb2.vin and DATEDIFF(t1.dt,tb2.dt)=1 

改进后的HQL

with single_trip as(
    select
        vin,
        start_soc,
        end_soc,
        start_mileage,
        end_mileage,
        start_timestamp,
        end_timestamp,
        dt
    from dws_electricity_single_trip_detail
    where substr(dt,1,7)='2023-09'
)
select
  *
from single_trip t1
left join single_trip t2
on t1.vin=t2.vin
where DATEDIFF(t2.dt,t1.dt)=1

转载于:https://blog.csdn.net/youhuakongzhi/article/details/109515659

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值