如何使用Logstash过滤器在其他列的某些行的基础上添加新列



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

cummulated_values
0
2
5
10
17

如何使用logstash过滤器添加新的";值";列,这些行被定义为values[n]:=累积值[n]-累积值[n-1],其中0<n<=行总数values[0]:=累积值[0],其中累积值[n]表示";累积值";柱因此输出表将如下所示:

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

我会使用ruby过滤器来实现它。

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,因此如果您没有设置它,则可以(。

最新更新