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