【问题标题】:How to write a non-equi join in Hive如何在 Hive 中编写非 equi 连接
【发布时间】:2022-02-23 00:04:01
【问题描述】:

我的表格包括 3 个日期列, dateA , dateB 和 dateC 我需要什么:

JOIN ON dateA between dateB and dateC

JOIN 在 Teradata 中运行良好,但在 Hive 中运行时出现错误。

select *
from
table A
left join table B
on A.col1 = B.col1
and A.dateA between B.dateB and B.dateC

错误:

在 JOIN dateB 中遇到左右别名

非常感谢您对此的帮助!

【问题讨论】:

  • 请提供查询。似乎列来自不同的连接表?
  • 我已经更新了描述!
  • “出现错误”...?请给他们看

标签: sql hadoop hive hiveql non-equi-join


【解决方案1】:

原因是 Hive 不支持非 equi 连接。将 BETWEEN 连接条件移动到 WHERE

select *
from
table A
left join table B on A.col1 = B.col1
WHERE (A.dateA between B.dateB and B.dateC)
      OR B.col1 is NULL --allow not joined records from A (left join)

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 2021-05-28
    • 1970-01-01
    • 2017-11-01
    • 2019-11-12
    • 2021-06-13
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多