Splunk Cloud Platform

Calculate cumulative time from first event in group for each event

smahoney
Path Finder

Basically data looks like this.  I want to calculate the average time to complete an order across many orders each with different amounts of items.  

 

_time,orderId,"receivedOrder"
_time,itemId,orderId,"completedItemProcessing"
_time,itemId,orderId,"completedItemProcessing"
_time,itemId,orderId,"completedItemProcessing"

I have a query that works, but its hugely inefficient and throws errors due to hitting the stats limit.  There has to be a better way to do this, streamstats or delta just gave me the duration from the previous event in the chain and I need to have that evaluate against the order time for all items in an order, not the previous item.


 

index=index "@mt"="itemComplete" OR @mt="orderReceived" 
| fillnull value=orderReceived itemComplete
| stats earliest(_time) as orderReceived list(itemId) as itemId,list(_time) as prepTime by orderId 
| mvexpand prepTime
| eval timeToPrep=prepTime-orderReceived 
| stats avg(timeToPrep) as avgItemCompletedDuration
| where startOfPreperation>0

 

   

Labels (1)
0 Karma

ITWhisperer
SplunkTrust
SplunkTrust

What about streamstats earliest(_time) as start latest(_time) as end by orderId, Then each event should have the start and end time of the whole order.

0 Karma
Get Updates on the Splunk Community!

Video | Welcome Back to Smartness, Pedro

Remember Splunk Community member, Pedro Borges? If you tuned into Episode 2 of our Smartness interview series, ...

Detector Best Practices: Static Thresholds

Introduction In observability monitoring, static thresholds are used to monitor fixed, known values within ...

Expert Tips from Splunk Education, Observability in Action, Plus More New Articles on ...

Splunk Lantern is a Splunk customer success center that provides advice from Splunk experts on valuable data ...