Calculated fields

Calculated fields are created from measures. They use existing measures to calculate new measures.

Data as of 09 Aug 2022

Display name

Description

Tags

Formula text

# Contacts put on Hold   QM # Calls put on hold: [Distinctcount of [Call].[CCRId] WHERE [Recording Event Type].[recordingEventTypeId]=3 && [Recording Event].[RecordingEvent.duration] > 0]
# Contacts Taken   QM [distinctcount of [Call].[CCRId] WHERE [Call].[wasAnswered]=1]
# Inbound Contacts   QM [distinctcount of [Call].[CCRId] WHERE [Call].[isInbound]=1]
# Outbound Contacts   QM [distinctcount of [Call].[CCRId] WHERE [Call].[isInbound]=0]
# Paused Contacts   QM # Paused Calls: [Distinctcount of [Call].[CCRId] WHERE [Recording Event Type].[recordingEventTypeId]=4 && [Recording Event].[RecordingEvent.duration] > 0]
Agent IsActive   Analytics, QM #old formula required a lot of work for the engine to evaluate #IF [Person].[activated] < now() && [Person].[deactivated] > now() THEN "true" else "false" LET [thisDay]=dateTrim(now(),"Day") #truncate current date and time to only YMD #[Person].[deactivated] should be 12/31/2999 for any active user. This value is changed when a user account is deactivated. IF dateTrim([Person].[deactivated],"Day") > [thisDay] THEN "true" ELSE "false"
ATTR_CCRID_Link   Analytics, QM IF (lookupUserAttribute("calabrio.ar.mode") = 'CAR') THEN NULL ELSE attribute("LINK","[system[location.protocol]]//[system[location.hostname]]/index.html#/recordings/"&text([Call].[CCRId])) & <FORECOLOR blue>
ATTR_DURATION   Analytics, QM <DURATION;PATTERN "mm:ss">
ATTR_DURATION_hhmmss   Analytics, QM <DURATION;PATTERN "hh:mm:ss">
ATTR_kpiScoreColor   Analytics, QM #Calabrio red - color("#A6192E") #Calabrio yellow - color("#FFC72C") #Calabrio green - color("#279989") <RANGE :0.7 <BACKCOLOR color("#A6192E"); FORECOLOR white>;RANGE 0.7+:1.0- <BACKCOLOR color("#FFC72C")>;RANGE 1.0: <BACKCOLOR color("#279989"); FORECOLOR white>>
ATTR_NPS_ChartColors   Analytics, QM INSPECT [Call].[NPS Response] CASE 0,1,2,3,4,5,6 THEN <FORECOLOR color("#A6192E")> CASE 7,8 THEN <FORECOLOR color("#FFC72C")> CASE 9,10 THEN <FORECOLOR color("#279989")> ELSE null
ATTR_NPSColours   Analytics, QM <RANGE -100:0 <FORECOLOR color("#A6192E")>;RANGE 1:50 <FORECOLOR color("#FFC72C")>;RANGE 51:100 <FORECOLOR color("#279989")>>
ATTR_PredictiveNPS_ChartColors   Analytics INSPECT [Predictive NPS Response2].[Predictive NPS Response] CASE 0,1,2,3,4,5,6 THEN <FORECOLOR color("#A6192E")> CASE 7,8 THEN <FORECOLOR color("#FFC72C")> CASE 9,10 THEN <FORECOLOR color("#279989")> ELSE null
ATTR_SentimentChartColors   Analytics, QM INSPECT [Sentiment] CASE "Negative" THEN <FORECOLOR color("#A6192E")> CASE "Neutral" THEN <FORECOLOR color("#FFC72C")> CASE "Positive" THEN <FORECOLOR color("#279989")> ELSE null
Average Contact Duration   QM iferror([callDurationSeconds]/[CountOfCallId],0)
Average Contact Time   QM iferror([callDurationSeconds]/[CountOfCallId],0)
Average Evaluation Score   QM [AVG of [Eval].[totalScore2]]
Average Hold Time   QM #[AVG of [RecordingEvent.duration] WHERE [Recording Event Type].[recordingEventTypeId]=3]/1000 [AVG of [SUM of [RecordingEvent.duration] BY [Call] WHERE [Recording Event Type].[recordingEventTypeId]=3]] / 1000
AVG Predictive NPS   Analytics [AVG of [Predictive Net Promoter Score]]
AVG Predictive Quality Score   Analytics [AVG of [Predictive Quality Score]]
Contact Duration Hours   QM ifNull([callDurationSeconds],0)
Contact Duration Seconds   QM ifNull([duration],0)/1000
Contacts - Negative Sentiment   Analytics [Distinctcount of [Call].[CCRId] WHERE [Call].[Sentiment] = "Negative"]
Contacts - Negative Sentiment %   Analytics iferror([Contacts - Negative Sentiment]/[Contacts - with Sentiment],null)
Contacts - Neutral Sentiment   Analytics [Distinctcount of [Call].[CCRId] WHERE [Call].[Sentiment] = "Neutral"]
Contacts - Positive Sentiment   Analytics [Distinctcount of [Call].[CCRId] WHERE [Call].[Sentiment] = "Positive"]
Contacts - Positive Sentiment %   Analytics iferror([Contacts - Positive Sentiment]/[Contacts - with Sentiment],null)
Contacts - with Sentiment   Analytics [Distinctcount of [Call].[CCRId] WHERE [Call].[Sentiment] <> null]
Count of AgentId   Analytics, QM [distinctcount of [Agent].[WFMAgentId]]
Count Phrases   Analytics [count of [Phrase Confidence].[Phrase].[Phrase]]
CountOfCcrId   Analytics, QM [distinctcount of [Call].[CCRId]]
CountOfEvalID   QM [distinctcount of [Eval].[EvalId]]
CountOfFormID   QM [distinctcount of [Form].[FormName]]
CountOfGroupId   Analytics, QM [distinctcount of [Group].[GroupId]]
CountOfPersonID   Analytics, QM [distinctcount of [Person].[PersonId]]
CountOfTeamId   Analytics, QM [distinctcount of [Team].[TeamId]]
dCount Phrases   Analytics [distinctcount of [Phrase].[Phrase]]
EachUsedPhrase   Analytics each(setToList([DistinctValues of [UsedPhrase] by only [Call]]))
Evaluation Comments - Raw Text   QM LET [comments]=[DistinctValues of [Evaluation Comment].[Evaluation Comment Text]] IF setSize([comments])=0 THEN "" ELSE format(<SET_START "* ";SET_END "";SET_SEPARATOR " * ">,[comments])
Evaluation Total Score Cohort   QM #Test here for Percentage or Points to determine scale bands (0-100 or groups of 100's to 1000) INSPECT [Eval].[totalScore2] WHEN [] <11 THEN "01: 0-10" WHEN [] <21 THEN "02: 11-20" WHEN [] <31 THEN "03: 21-30" WHEN [] <41 THEN "04: 31-40" WHEN [] <51 THEN "05: 41-50" WHEN [] <61 THEN "06: 51-60" WHEN [] <71 THEN "07: 61-70" WHEN [] <81 THEN "08: 71-80" WHEN [] <91 THEN "09: 81-90" WHEN [] <101 THEN "10: 91-100" ELSE "99: Unknown"
Evaluation Total Score Cohort Dual test   QM #Test here for Percentage or Points to determine scale bands (0-100 or groups of 100's to 1000) LET [normalizedscore]=([Eval].[totalScore2]/[Form].[FormTotalPoints])*100 INSPECT [normalizedscore] WHEN [] <11 THEN "01: 0-10" WHEN [] <21 THEN "02: 11-20" WHEN [] <31 THEN "03: 21-30" WHEN [] <41 THEN "04: 31-40" WHEN [] <51 THEN "05: 41-50" WHEN [] <61 THEN "06: 51-60" WHEN [] <71 THEN "07: 61-70" WHEN [] <81 THEN "08: 71-80" WHEN [] <91 THEN "09: 81-90" WHEN [] <101 THEN "10: 91-100" ELSE "99: Unknown"
KPI Actual   Analytics, QM kpiActual(currentmeasurevalue())
KPI Actual Delta   Analytics, QM kpiActualDelta(currentmeasurevalue())
KPI Actual Delta %   Analytics, QM kpiActualDeltaPercent(currentmeasurevalue())
KPI Goal   Analytics, QM kpiGoal(currentMeasureValue())
KPI Prior Actual   Analytics, QM kpiPriorActual(currentmeasurevalue())
KPI Prior Score   Analytics, QM kpiPriorScore(currentmeasurevalue())
KPI Score   Analytics, QM kpiScore(currentMeasureValue())
KPI Score Delta   Analytics, QM kpiScoreDelta(currentMeasureValue())
KPI Time Period Display   Analytics, QM kpiTimePeriodDisplay(currentMeasureValue())
KPI Time Period Name   Analytics, QM kpiTimePeriodName(currentMeasureValue())
KPI Time Period Range   Analytics, QM kpiTimePeriodRange(currentMeasureValue())
KPI Values   Analytics, KPI, QM ""
Net Promoter Score Cohort   Analytics, QM INSPECT [Call].[NPS Response] CASE 9,10 THEN "Promoters" CASE 7,8 THEN "Passives" CASE 0,1,2,3,4,5,6 THEN "Detractors" ELSE "Unknown"
Normalized Predictive Contact Score   Analytics # old formula # [Call].[Predictive Quality Score] / [Call].[Form].[FormTotalPoints] if [Call].[Form].[FormTotalPoints] = 0 then NULL else [Call].[Predictive Quality Score] / [Call].[Form].[FormTotalPoints]
NPS   Analytics, QM #LET [TotalResponses]=[Count of [Call].[NPS Response] WHERE [Call].[NPS Response]<>NULL] #LET [PromoterPCT] = [Promoters]/[TotalResponses] #LET [DetractorPCT] = [Detractors]/[TotalResponses] #([PromoterPCT]-[DetractorPCT])*100 #old formula above did not account for records from other data sets inflating count numbers and returning NPS above 100 LET [TotalResponses] = [Count of [Call].[NPS Response]] LET [TotalPromoters] = [Count of [Call].[NPS Response] WHERE [Call].[NPS Response] >= 9] LET [TotalDetractors] = [Count of [Call].[NPS Response] WHERE [Call].[NPS Response] <= 6] LET [PromoterPCT] = iferror([TotalPromoters]/[TotalResponses],null) LET [DetractorPCT] = iferror([TotalDetractors]/[TotalResponses],null) ([PromoterPCT]-[DetractorPCT])*100
NPS Response Distribution   Analytics, QM [Call].[NPS Response]
Paused Duration   QM [SUM of [RecordingEvent.duration] WHERE [Recording Event Type].[recordingEventTypeId]=4]/1000
Paused Duration of a Contact   QM ([SUM of [RecordingEvent.duration] WHERE [Recording Event Type].[recordingEventTypeId]=4]/1000)/[callDurationSeconds]
Predictive Evaluation Total Score Cohort   Analytics LET [predscore]=([Call].[Predictive Quality Score] / [Call].[Form].[FormTotalPoints])*100 INSPECT [predscore] WHEN [] <11 THEN "01: 0-10" WHEN [] <21 THEN "02: 11-20" WHEN [] <31 THEN "03: 21-30" WHEN [] <41 THEN "04: 31-40" WHEN [] <51 THEN "05: 41-50" WHEN [] <61 THEN "06: 51-60" WHEN [] <71 THEN "07: 61-70" WHEN [] <81 THEN "08: 71-80" WHEN [] <91 THEN "09: 81-90" WHEN [] <101 THEN "10: 91-100" ELSE "99: Unknown"
Predictive Net Promoter Score Cohort   Analytics INSPECT [Predictive NPS Response] CASE 9,10 THEN "Promoters" CASE 7,8 THEN "Passives" WHEN [] < 7 THEN "Detractors" ELSE "Unknown"
Predictive NPS   Analytics LET [TotalResponses]=[Count of [Call].[Predictive NPS Response] WHERE [Call].[Predictive NPS Response]<>NULL] LET [PromoterPCT] = [Predictive Promoters]/[TotalResponses] LET [DetractorPCT] = [Predictive Detractors]/[TotalResponses] ([PromoterPCT]-[DetractorPCT])*100
Question Label Text Group   Analytics, QM [Question Label].[label]
Question Text Group   Analytics, QM [Question].[QuestionText]
scoreContactsNegativeSentimentKPI   Analytics, KPI, QM if kpiActual = null then null else maxOfList(0, (1 - kpiActual) / (1 - kpiGoal))
scoreNPSKPI   Analytics, QM if kpiActual = null then null else (kpiActual + 100) / (kpiGoal + 100)
scorePreferGreater   Analytics, QM # old formula: #kpiActual / kpiGoal # # add check for divide by zero, return null if kpiGoal = 0 then error("Zero goal value", "Divide by zero error result from zero goal value") else kpiActual / kpiGoal
scorePreferLesser   Analytics, QM # old version kpiTarget / kpiActual #This works fairly well when the actual is near the target, but explodes when the #actual is low and gives a DivideByZero when the actual is zero. #It also doesn't decay very quickly when the actual is above the target. if kpiActual = null then null else maxOfList(0, 2 - kpiActual / kpiGoal)
Search   Analytics, QM text([Call].[CCRId])
Total Evaluation Score   QM [SUM of [Eval].[totalScore2]]