对于每20分钟的时间间隔,我尝试查找/排列唯一的ip地址及其相应的端口号,这些端口会产生最大的流量,以mbps(每秒兆位)为单位降序排列。
每个IP地址在每20分钟内可以记录一次或多次记录。每次以20分钟的时间间隔记录一次IP地址时,它可能会列出相同的端口号,也可能没有。
例如,在下表中,IP地址192.168.10.1在列出的12:20期间显示了四次,端口号分别为443、80、80和80。在另一种情况下,IP地址192.168.10.2在12:40期间显示两次,端口号为443,列出两次,但mbps(带宽)列的值不同。
如果ip地址在特定时间段内显示多次,请检查其对应的端口,如果同一端口被列出多次,则仅选择/列出其端口产生最多流量的实例。每20分钟不允许重复IP和端口。
根据数据注入时间对表进行分区。每20分钟间隔的行以百万为单位。
查询将使用标准SQL。数据以字节为单位捕获,因此我需要以某种方式在查询中将这种转换并入mbps。
原始表:
Row time ip_address port mbps
1 01/01/2019 00:00 192.168.10.1 443 100
2 01/01/2019 00:00 192.168.10.1 443 150
3 01/01/2019 00:00 192.168.10.1 80 120
4 01/01/2019 00:00 192.168.10.1 80 123
5 01/01/2019 00:20 192.168.10.2 80 200
6 01/01/2019 00:20 192.168.10.1 80 100
7 01/01/2019 00:20 192.168.10.2 80 210
8 01/01/2019 00:20 192.168.10.1 80 110
9 01/01/2019 00:40 192.168.10.2 443 200
10 01/01/2019 00:40 192.168.10.3 443 300
11 01/01/2019 00:40 192.168.10.2 443 220
12 01/01/2019 00:40 192.168.10.1 443 300
13 01/01/2019 00:00 192.168.10.3 443 90
14 01/01/2019 00:00 192.168.10.2 80 100
15 01/01/2019 00:00 192.168.10.1 443 500
通过查询传递以上内容,我想得到以下结果:
Row time ip_address port mbps
1 01/01/2019 00:00 192.168.10.1 443 150
2 01/01/2019 00:00 192.168.10.1 80 123
3 01/01/2019 00:20 192.168.10.1 80 110
4 01/01/2019 00:20 192.168.10.2 80 200
5 01/01/2019 00:40 192.168.10.1 443 300
6 01/01/2019 00:40 192.168.10.2 443 220
7 01/01/2019 00:40 192.168.10.3 443 300
8 01/01/2019 00:00 192.168.10.1 443 500
9 01/01/2019 00:00 192.168.10.2 80 100
10 01/01/2019 00:00 192.168.10.3 443 90
我尝试使用几个查询来实现以上目标,但没有成功。任何帮助/指向正确的方向,将不胜感激。谢谢!