Name: ----- AT_getDurationDisplay Inputs: ------- 1. duration (Any Type) Definition: ----------- fn!if( fn!isnull(ri!duration), null, fn!with( local!days:fn!tointeger(ri!duration), local!hours:fn!hour(ri!duration), local!minutes:fn!minute(ri!duration), local!seconds:fn!second(ri!duration), local!milliseconds:fn!milli(ri!duration), local!daysText:if(local!days>0,concat(local!days," days"),null), local!hoursText:if(local!hours>0,concat(local!hours," hours"),null), local!minutesText:if(local!minutes>0,concat(local!minutes," minutes"),null), local!secondsText:if(local!seconds>0,concat(local!seconds," seconds"),null), local!millisecondsText:if(local!milliseconds>0,concat(local!milliseconds," milliseconds"),null), local!formattedDuration:fn!reject(fn!isnull,{local!daysText,local!hoursText,local!minutesText,local!secondsText,local!millisecondsText}), fn!joinarray(local!formattedDuration," ") ) ) Sample Inputs & Outputs: ------------------------ 1. 0::00:00:00.126 = 126 milliseconds 2. 7::00:50:48.822 = 7 days 50 minutes 48 seconds 822 milliseconds Constraints: ------------ 1. The column that hold duration should be of type DURATION in the portal report. This would ease the stripping and formatting of details as explained above. 2. The above specified rule should be applied over the entire column data in an iterative fashion. apply( rule!AT_getDurationDisplay(duration:_), a!queryProcessAnalytics( report: , query: a!query( pagingInfo: a!pagingInfo( startIndex: 1, batchSize: -1 ) ) ).data.c5 ) /* Where c5 holds DURATION column data */