Hive 不支持非对等连接:常见的解决方法是将连接条件移动到 where 子句,当您需要内部连接时,这可以正常工作。但是左连接呢?
人为的例子。假设我们有一个 orderLineItem 表,我们需要加入一个 ProductPrice 表,该表具有产品 ID、价格和价格适用的日期范围。我们想加入这个,其中 ProductID=ProductID & OrderDate 在开始和结束日期之间。如果 productID 或有效日期范围不匹配,我仍然希望查看所有 orderLineItem。
这个 SQL 小提琴是我们如何在 MSSQL 中执行此操作的示例:http ://sqlfiddle.com/#!6/ fb877/7
问题 如果我应用典型的解决方法,并将 non equi 过滤器移动到 where 子句,它将成为内部联接。在上面的例子中,在 sql fiddle & 下面,我有一个不在查找中的产品 ID。
问题: 如果 hive 不支持非 eqi-joins,如何实现左非 eqi?
[SQLFiddle 内容]
表格:
CREATE TABLE OrderLineItem(
LineItemIDId int IDENTITY(1,1),
OrderID int NOT NULL,
ProductID int NOT NULL,
OrderDate Date
);
CREATE TABLE ProductPrice(
ProductID int,
Cost float,
startDate Date,
EndDate Date
);
Run Code Online (Sandbox Code Playgroud)
加载数据以及我们如何加入 MSSQL:
--Old Price. Should …Run Code Online (Sandbox Code Playgroud)