У меня есть таблица улья, в которой есть несколько http-сессий, которые мне нужно проанализировать. Один столбец имеет идентификатор сеанса http, который согласован на протяжении всего сеанса.
Я пытаюсь найти все строки, которые являются частью сеансов, в которых было выполнено одно из определенных действий, И сеанс завершился по таймауту.
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.
Проблема в том, что мне это нужно для всех идентификаторов, которые соответствуют обоим критериям, поэтому мне нужно сначала найти все идентификаторы:)
Надеюсь, это имеет смысл, я чувствую, что, возможно, сформулировал вопрос в замешательстве.