该表位于我们的impala群集上,尽管impala shell看起来与SQL非常相似。除了执行非常简单的查询外,我几乎没有SQL或Impala的经验,因此此问题可能超出我的经验和薪水等级。
我需要使用impala从我们的数据库中获取一些数据。表中还有其他列,但是我的命令捕获了我感兴趣的这3列。数据/结果看起来像这样:
time | server | data
0 | A | 500
0 | B | 200
0 | C | 300
1 | A | 100
1 | A | 400
1 | B | 200
1 | C | 300
2 | A | 900
2 | B | 800
2 | C | 700
2 | C | 600
理想情况下,数据应看起来像时间0,其中每个服务器对于每个时间值仅显示一次。但是,存在一个错误,并且如图所示,服务器可以多次显示一个时间值。也不是同一台服务器每个时间值显示一次以上的服务器,如上例所示。
无论如何,我要读取/查找什么impala-shell / SQL命令以告诉它选择不同的时间和服务器,但是要选择两个数据值中的较大者?我不知道如何继续过去:
select distinct time, server from table;
如果这太难或太复杂,也许有人可以将我指向一个命令,该命令选择不同的时间和服务器,但打印找到的针对不同的时间和服务器对的数据的第一个值。
最佳答案
要获得唯一的时间和服务器值以及最大的数据值,可以使用带有GROUP BY
的查询,如下所示:
SELECT TIME, SERVER, MAX(DATA)
FROM TABLE
GROUP BY TIME, SERVER
ORDER BY TIME, SERVER;
希望这可以帮助。
分享并享受。