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 :)
我希望这是有道理的,我觉得我可能以一种令人困惑的方式措辞了这个问题。
解决方案
试试这个,它可以在 SQL 中工作,我对 Hive 不是超级精通,但它应该根据我读过的内容工作。
SELECT id, x_date, y, z, q, a
FROM log
WHERE z IN ('1','2','3','4','5')
AND id IN (
SELECT id
FROM log
WHERE ((to_date(x_date)) >= (date_sub(current_date, 1)))
AND y like '%timeout%')
推荐阅读
- javascript - 如何创建粘性导航栏?
- javascript - 如何在此数据结构中选择这些成员变量
- java - java pojo中相同的json字段设置为不同的属性
- javascript - 错误:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配
- c# - 如何告诉 MVVMLight 创建一个新的视图模型?
- django - Django Queryset 多对多
- android - 如何将数组中的值填充到 SQLite 数据库中
- php - ["read"] 没有值
- python - 在 python 中处理长整数除法
- html - 在安全网站上通过 MSXML 提取 cookie 时遇到问题