我想选择两个日期之间的某些表格行(可以在单独的表格中找到)。我的表和查询的详细信息可以在上一个问题here中找到(我现在对如何在HIVE / hiveQL中执行此操作感兴趣)。正如我当前的查询所表示的那样,它运行了很长时间,然后似乎无限期地挂起,而当我在日期中进行硬编码时,它很快就会完成。表和查询供参考:
VISIT_INFO,包含以下列:
pers_key - unique identifyer for each person
pers_name - name of person
visit_date - date at which they visited a business
VALID_DATES,包含以下列:
condition - string
start_date - date
end_date - date
查询本身:
select pers_key, pers_name from VISIT_INFO a
CROSS JOIN
(select start_date, end_date from VALID_DATES where condition = 'condition1') b
WHERE (a.visit_date >= b.start_date and a.visit_date <= b.end_date)
GROUP BY a.pers_key
值得注意的是我使用HIVE 0.12,因此摆脱连接并将select语句放在WHERE子句中是不可能的。我想知道这个查询究竟出了什么问题,或者是什么导致它失败。关于如何改进这一点的任何建议将不胜感激。
答案 0 :(得分:3)
尝试:
select pers_key, pers_name
from VISIT_INFO a
join
valid_dates b
WHERE a.visit_date BETWEEN b.start_date AND b.end_date
GROUP BY pers_key, pers_name;
从Hive 0.13开始:
select pers_key, pers_name
from VISIT_INFO a , valid_dates b
WHERE a.visit_date BETWEEN b.start_date AND b.end_date
GROUP BY pers_key, pers_name;