Splunk新手求助:如何将ReportPeriod列按时间顺序排序
Splunk中ReportPeriod按时间顺序排序的解决方法
你的ReportPeriod是文本格式(比如"Jan 2024"),Splunk默认会按字母顺序排序。要实现时间顺序排序,需要先将其转换为时间戳字段,按时间戳排序后再保留原格式显示。
另外,你的原始查询存在几处语法错误,我已经一并修正,以下是完整的查询语句:
dedup EnvelopID | stats count by ReportPeriod EnvelopStatus Template10 TemplateName Region Country | eval period_time = strptime(ReportPeriod, "%b %Y") // 将文本格式的年月转换为时间戳 | sort period_time // 按时间戳实现时间顺序排序 | eval EnvelopStatus = case( EnvelopStatus="SUBMITTERSIGNED", "PENDINGAPPROVAL", EnvelopStatus="APPROVERAPPROVED", "PENDINGAPPROVAL", EnvelopStatus="SUBMITTERREJECTED", "REJECTED", EnvelopStatus="APPROVERREJECTED", "REJECTED", EnvelopStatus="CREATED", "CREATED", EnvelopStatus="COMPLETED", "COMPLETED", EnvelopStatus="VOIDED", "VOIDED" ) | addcoltotals | fields - period_time // 移除临时时间戳字段,可选操作
关键说明:
- 时间格式匹配:
strptime的第二个参数要和你的ReportPeriod实际格式对应:- 如果是缩写月份(Jan、Feb),用
%b %Y - 如果是全称月份(January、February),用
%B %Y - 如果格式是"2024-01"或"2024-Jan",需要调整格式符(比如
%Y-%m或%Y-%b)
- 如果是缩写月份(Jan、Feb),用
- 语法修正:原查询中
stats的字段列表引号错误、case函数的括号/等号/引号不匹配问题都已修复 - 排序逻辑:通过临时字段
period_time存储时间戳,用sort命令按时间戳排序,最后可以选择移除这个临时字段
内容的提问来源于stack exchange,提问作者SR3599
相关产品推荐
相关产品推荐

