Splunk按日期分组数据:合并同日期多行列数据问题
Splunk按日期合并Tier数据解决方案
完整修改后的查询语句
| eval Tier1=(StatusCode>400) | eval Tier2=(StatusCode>499) | eval Tier3=(StatusCode>500) | fields Date Tier1 Tier2 Tier3 | sort Date | stats max(Tier1) as Tier1 max(Tier2) as Tier2 max(Tier3) as Tier3 by Date
关键逻辑说明
- 使用
stats命令按Date字段分组,这是实现同日期数据合并的核心操作 max()函数会自动忽略空值(BLANK),提取每个日期分组内各Tier列的有效数值,刚好满足将同一日期的多行数据合并为单行的需求- 如果你的Tier字段是统计计数(比如符合条件的事件数量),可以替换
max()为sum(),结果完全一致——因为同一日期的每行仅单个Tier有值,其余为空,求和后就是该Tier的实际数值
特殊情况处理(若BLANK为字符串值)
如果原始数据中的"BLANK"是字符串而非Splunk默认的空值,需要先将其转为空值再聚合:
| eval Tier1=(StatusCode>400) | eval Tier2=(StatusCode>499) | eval Tier3=(StatusCode>500) | fields Date Tier1 Tier2 Tier3 | sort Date | eval Tier1=if(Tier1=="BLANK", null(), Tier1) | eval Tier2=if(Tier2=="BLANK", null(), Tier2) | eval Tier3=if(Tier3=="BLANK", null(), Tier3) | stats max(Tier1) as Tier1 max(Tier2) as Tier2 max(Tier3) as Tier3 by Date
内容的提问来源于stack exchange,提问作者Nisheeth
相关产品推荐
相关产品推荐

