该表位于我们的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;


希望这可以帮助。

分享并享受。

10-04 21:59
查看更多