Reporting

Comparing Standard Deviations

achudnoff
Explorer

I'm trying to write a report that returns any report types where the 1 hour average Duration has exceed the average + 2 Standard Deviations for a running 24 hours. How can I compare these values?

I have a query, but the 1 hour average isn't showing up:

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -24h latest=now| stats avg(Duration) as avg stdev(Duration) as standdev by ReportType | eval two = 2* standdev | eval avgts = avg + two | append [ search index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest=-1h latest=now | stats avg(Duration) as nowavg ]

Tags (2)
0 Karma
1 Solution

lguinn2
Legend

First, I have a question: what do you get when you run the two searches independently? That is, what happens when you run

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -24h latest=now| stats avg(Duration) as avg stdev(Duration) as standdev by ReportType | eval two = 2* standdev | eval avgts = avg + two 

And what happens when you run

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest=-1h latest=now | stats avg(Duration) as nowavg

I think you will get a number of results for the first search (one for each ReportType) and only 1 result for the second search. I think I would do it this way

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -24h@h latest=@h | 
fields Duration ReportType |
stats avg(Duration) as avg stdev(Duration) as standdev by ReportType |  
eval avgts = avg + ( 2* standdev ) | 
fields ReportType avgts |
join ReportType  [ search
index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -1h@h latest=@h | 
fields Duration ReportType |
stats avg(Duration) as nowavg by ReportType |
fields ReportType nowavg ] |
where nowavg > avgts

Hope this works for you!

View solution in original post

lguinn2
Legend

First, I have a question: what do you get when you run the two searches independently? That is, what happens when you run

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -24h latest=now| stats avg(Duration) as avg stdev(Duration) as standdev by ReportType | eval two = 2* standdev | eval avgts = avg + two 

And what happens when you run

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest=-1h latest=now | stats avg(Duration) as nowavg

I think you will get a number of results for the first search (one for each ReportType) and only 1 result for the second search. I think I would do it this way

index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -24h@h latest=@h | 
fields Duration ReportType |
stats avg(Duration) as avg stdev(Duration) as standdev by ReportType |  
eval avgts = avg + ( 2* standdev ) | 
fields ReportType avgts |
join ReportType  [ search
index="prd_common_events" AppCode="MMX" EventName="ReportRun" earliest = -1h@h latest=@h | 
fields Duration ReportType |
stats avg(Duration) as nowavg by ReportType |
fields ReportType nowavg ] |
where nowavg > avgts

Hope this works for you!

Get Updates on the Splunk Community!

Data Management Digest – December 2025

Welcome to the December edition of Data Management Digest! As we continue our journey of data innovation, the ...

Index This | What is broken 80% of the time by February?

December 2025 Edition   Hayyy Splunk Education Enthusiasts and the Eternally Curious!    We’re back with this ...

Unlock Faster Time-to-Value on Edge and Ingest Processor with New SPL2 Pipeline ...

Hello Splunk Community,   We're thrilled to share an exciting update that will help you manage your data more ...