如何在Splunk中用group by或rex实现重复DepId仅首行展示
Splunk实现同组DepId仅首行显示的方案
不需要使用rex函数,用streamstats搭配eval即可实现该效果,group by会聚合同组数据,无法保留所有员工的独立行,不适用该场景。
假设你已经通过现有查询拿到了包含DepId、EmpName两个字段的结果集,在现有查询后追加以下SPL语句即可:
<替换为你现有的基础查询语句> | sort 0 DepId EmpName | streamstats current=f last(DepId) as prev_DepId by DepId | eval DepId=if(isnull(prev_DepId), DepId, "") | table DepId EmpName
各步骤作用说明:
sort 0 DepId EmpName:先按部门ID、员工姓名排序,保证同部门的行连续排列,参数0代表不限制排序行数,避免数据量较大时结果被截断streamstats current=f last(DepId) as prev_DepId by DepId:按DepId分组统计,给同组除首行外的所有行标记上同组的DepId,同组首行的prev_DepId值为nulleval DepId=if(isnull(prev_DepId), DepId, ""):判断如果当前行是同组首行则保留原DepId值,其余行将DepId置为空table DepId EmpName:按需求顺序输出指定字段
如果后续还需要用到原DepId值做其他计算,可以在排序步骤后新增备份字段:
| eval raw_DepId=DepId
内容的提问来源于stack exchange,提问作者k.jones
相关产品推荐
相关产品推荐

