Splunk条件计数

时间:2018-03-19 11:31:40

标签: splunk splunk-query

我有一些关于导入Splunk的文件的CSV数据。数据如下所示:

"\\domain\path\to\file\","<filename>","<fsize>","<ext>","<Last_access>","<last_write>","<creation_time>","<attributes>","<owner>"

我已使用以下方法将所有日期字符串转换为纪元:

| eval epoch_LastAccessTime=strptime(LastAccessTime, "%d/%m/%Y %H:%M:%S")
...
...

我想得到:

  • 6个月到3年前最后一次访问的文件的百分比
  • 3年或更久以前访问过的文件的百分比。

这是我在卡住之前尝试过的搜索查询:

index="<my_index>" sourcetype="<my_sourcetype>" 
| rex field=DirectoryName "\\\domain\.org\\\teams\\\(?<Team>[^\\\]*)" 
offset_field=_extracted_fields_bounds  
| eval epoch_LastAccessTime=strptime(LastAccessTime, "%d/%m/%Y 
%H:%M:%S") 
| eval _time=epoch_LastAccessTime
| timechart span=6mon count

我尝试过使用以下命令:

| where epoch_LastAccessTime>=three_year_ago_from_now AND 
epoch_LastAccessTime<=six_months_ago_from_now

然而,这排除了其他一切(3y +)

我希望结果看起来像:

TimeRange  Perc
6m-3y      60%
3y+        40%

1 个答案:

答案 0 :(得分:0)

信用:Lowell

使用where构建新的分类字段,而不是使用eval来限制结果。

此时您将不再需要时间表。

类似的东西:

| eval TimeRange=case(epoch_LastAccessTime>=three_year_ago_from_now, "3y+",
                      epoch_LastAccessTime>=six_months_ago_from_now, "6m-3y",
                      0=0, "less than 6m")
| stats count by TimeRange
| eventstats sum(count) as total_count
| eval pct=100*count/total_count