【发布时间】:2019-10-02 17:19:53
【问题描述】:
以下是查询和示例数据集(实际数据集很大并且位于 HDFS 中) 我正在尝试通过以下查询找出数据集 1 中的差异。 如果可能的话,有没有更好的方法可以在不使用 join 的情况下实现这一点?
SELECT
dt1.name,
dt1.code,
dt1.day
FROM
dt1
LEFT OUTER JOIN dt2 ON (dt1.name = dt2.name AND dt1.code = dt2.code AND dt1.day = dt2.day)
WHERE
dt2.name IS NULL AND dt2.code IS NULL AND dt2.day IS NULL
以下是数据集
Data SET 1
name code day
a 1001 2019-01-01
a 1002 2019-01-02
a 1003 2019-01-01
b 2001 2019-01-01
b 2002 2019-01-02
b 2003 2019-01-03
找出给定日期在数据集 2 中找不到的数据集 1 的名称-代码组合
Data SET 2
name code day
a 1001 2019-01-01
b 1002 2019-01-01
a 1003 2019-01-01
d 2001 2019-01-01
e 2002 2019-01-01
b 2003 2019-01-01
【问题讨论】:
-
join应该没问题。你有什么问题? -
您是否正在寻找来自 SET-1 且在 SET-2 中不可用的数据?
-
FULL JOIN 允许在两个表中找到差异:stackoverflow.com/a/42490123/2700344
标签: sql apache-spark hive hiveql