InfluxDB按字段分组(非标记)并获得前10名

时间:2018-08-10 20:00:30

标签: influxdb

我对influxdb非常陌生。

我有一个像这样的数据集; (每个行/点都是一个连接)

time                           dest_ip         source_ip    
----                           -------         ---------  
2018-08-10T11:42:38.848793088Z 211.158.223.252 10.10.10.227 
2018-08-10T11:42:38.87115392Z  211.158.223.252 10.10.10.59 
2018-08-10T11:42:38.875289088Z 244.181.55.139  10.10.10.59 
2018-08-10T11:42:38.880222208Z 138.63.15.221   10.10.10.59  
2018-08-10T11:42:38.886027008Z 229.108.28.201  10.10.10.227   
2018-08-10T11:42:38.892329728Z 229.108.28.201  10.10.10.181 
2018-08-10T11:42:38.896943104Z 229.108.28.201  10.10.10.59 
2018-08-10T11:42:38.904005376Z 22.202.67.174   10.10.10.227
2018-08-10T11:42:38.908818688Z 138.63.15.221   10.10.10.181  
2018-08-10T11:42:38.913192192Z 138.63.15.221   10.10.10.181 

dest_ip和source_ip是字段,而不是标签。

  1. 是否可以通过dest_ip对所有连接记录进行分组并获得计数最高的10条记录?

  2. 是否可以将dest_ip和source_ip分组在一起,并获得计数最高的10条记录?

  3. 还是任何其他解决方案,可以根据连接数将前10个source_ip与dest_ip关系建立起来?

1 个答案:

答案 0 :(得分:0)

当前,InfluxDB仅在my text子句中支持标签和时间间隔。如您所见,group by子句的语法(有关更多信息,请参考InfluxDB documention):

GROUP BY

但是,如果您插入SELECT <function>(<field_key>) FROM_clause WHERE <time_range> GROUP BY time(<time_interval>),[tag_key] dest_ip作为标签而不是字段,则可以使用InfluxQL查询语言实现您提到的所有愿望。