【发布时间】:2019-01-16 00:34:26
【问题描述】:
我有一个 hive 表,其中包含一些我需要分析的 http 会话。一列的 http 会话 ID 在整个会话中都是一致的。
我正在尝试查找属于会话一部分的所有行,其中执行了一组特定操作并且会话超时结束。
set hive.cli.print.header=true;
SELECT * FROM
(SELECT DISTINCT id, x_date, y
FROM log
WHERE ((to_date(x_date)) >= (date_sub(current_date, 1)))
AND y like '%timeout%') u
JOIN
(SELECT id, x_date, y, z, q, a
FROM log
WHERE ((to_date(x_date)) >= (date_sub(current_date, 1)))
AND z in ('1', '2', '3', '4')) o
ON u.id = o.id
ORDER BY u.id, o.x_date;
我要查找的是
id = 123 and y like '%timeout%'
AND (id = 123 and z in('1','2','3','4')
我目前得到的是类似的东西
if (id = 123 and y like %timeout%)
select * where (id = 123 and z in ('1','2','3','4'))
预期输出应该比实际输出大得多,因为我应该得到许多只有 ID = 123 的行。
问题是我需要所有符合这两个条件的 ID,所以我必须先找到所有 ID :)
我希望这是有道理的,我觉得我可能以一种令人困惑的方式措辞了这个问题。
【问题讨论】: