6.18 次序相关的分组:按相邻条件分组 - 大数据
大数据表中,计算条件表达式,并在结果为真时分新组。
在数据量大的日志文件中,日志是按日期时间顺序输出的。查找日志级别连续出现 ERROR 次数最多的一天。
| Date | Time | Level | IP | … |
|---|---|---|---|---|
| 2020/1/1 | 0:00:01 | INFO | 166.253.153.234 | … |
| 2020/1/1 | 0:00:02 | INFO | 99.72.133.239 | … |
| 2020/1/1 | 0:00:04 | WARN | 99.11.105.39 | … |
| 2020/1/1 | 0:00:05 | INFO | 117.69.80.195 | … |
| 2020/1/1 | 0:00:11 | INFO | 79.195.137.228 | … |
| … | … | … | … | … |
使用 cs.group() 函数的 @i 选项:当条件变化时分新组。
脚本:
| A | |
|---|---|
| 1 | =file(“ServerLog.txt”).cursor@t() |
| 2 | =A1.group@i(Date[-1] !=Date||Level[-1]!=Level;Date,Level,count(~):Count) |
| 3 | =A2.select(Level:“ERROR”) |
| 4 | =A3.top(1;ErrorCount) |
A1 创建日志文件游标
A2 使用 cs.group() 函数的 @i 选项,当条件变化时分新组。
A3 选出日志级别为 ERROR 的分组
A4 获得连续 ERROR 次数最多的组
运行结果:
| Date | ErrorCount |
|---|---|
| 2020/01/02 | 4 |
