Splunk中计算数组字段元素总和并生成新字段用于统计分析的方法
Splunk中计算数组字段元素总和并生成新字段用于统计分析的方法
我来帮你搞定这个Splunk数组求和的问题,其实用内置的多值字段处理函数就能轻松实现你的需求,下面直接给你可落地的解决方案:
核心查询语句
把你的基础搜索语句替换掉开头的...部分,就能为每条记录生成数组总和字段:
... 你的基础搜索语句 ... | eval totalSetSpan = mvreduce(setSpans, sum) | eval totalGetSpan = mvreduce(getSpans, sum)
生成目标表格
如果要输出你示例里的结构化表格,只需在后面加上table命令:
... 你的基础搜索语句 ... | eval totalSetSpan = mvreduce(setSpans, sum) | eval totalGetSpan = mvreduce(getSpans, sum) | table recordId totalSetSpan totalGetSpan
实现p99时间图表分析
按照你想要的timechart统计需求,直接用生成的总和字段即可:
... 你的基础搜索语句 ... | eval totalSetSpan = mvreduce(setSpans, sum) | timechart span=1m p99(totalSetSpan)
补充说明
这里用到的mvreduce是Splunk专门处理多值字段(也就是你说的数组)的工具函数,它会把指定的聚合函数(这里用sum求和)应用到数组的所有元素上,最终返回一个单值的总和结果。
要是你的Splunk版本比较旧,mvreduce不支持的话,可以换用下面的写法,效果完全一致:
| eval totalSetSpan = sum(mvmap(setSpans, $))
mvmap会遍历数组中的每个元素,$代表当前元素,再通过sum对所有元素求和得到最终结果。
备注:内容来源于stack exchange,提问作者Chetan
相关产品推荐
相关产品推荐

