如何使用Logstash过滤器基于其他列的某些行添加新列?

问题描述

假设我有一个csv文件,如下所示:

cummulated_values
0
2
5
10
17

如何使用logstash过滤器添加新的“值”列,该行定义为 values [n]:= cummulated_values [n]-cummulated_values [n-1],其中0 值[0]:=累积值[0] ,其中cummulated_values [n]表示第n “ cummulated_values”列的行? 因此输出表将如下所示:

cummulated_values,values
0,0
2,2
5,3
10,5
17,7

解决方法

我会使用红宝石滤镜来实现。

    csv { autodetect_column_names => true }
    ruby {
        code => '
            c = event.get("cummulated_values").to_i
            @values ||= c
            event.set("values",c - @values)
            @values = c
        '
    }

您需要保留事件的顺序,并且所有事件都需要通过相同的ruby过滤器实例。因此,必须将pipeline.workers设置为1,并验证是否设置了pipeline.ordered,然后将其设置为auto或true(默认值为auto,因此如果未设置,则可以)。>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...