Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi all,
Is there a Vlookup equivalent in Qlikview. I am trying to create a scorecard and need to assign points values to various stats achieved by the Agents within my call centre.
The lookup function I can see seems to be used only in the script and not within a book.
I have managed partial success using IF statements but the points are assigned to a range of values and so I am struggling.(260 - 275 seconds = =10 points, 276 - 285=5 points, etc)
If it can only be done via nested IF statements, what is the maximum number of if statements you can nest in an expression?
Here's hoping!!
Richard
Hi,
If I understood you question properly, doing this kind of scenario at back end (i.e at back end script) would be the prompt way.
Qlikview has inbuilt Vlookup function and you can also try using apply map function depending up on you requirement.
Answer for you Question, Limitation for if loop in expression.
No, there is no limitation in if statement.
If you can explain your scenario fully, we could think for some other better solution as well.
- Sridhar
Sridhar,
Thankyou for your time.
My requirements. I am creating a scorecard for a call centre. They are being measured on certain criteria (Average Call Time, etc) dependant on there average call time certain points are assigned to them.
I will need to create a number of tables for each of the criteria and then an overall score sheets detailing results and subsequent bonus achievement.
Will this need to be done in the load script? Or can an expression be created to evaluate the points they have achieved?
Currently I have the following huge IF statement that reads as ok from an expression point of view but it returns the points as 5 for everyone over the first value.
[=IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))>'250','5',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))<'279','5',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))>'280','10',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))<'309','10',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))>'310','20',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))<'329','20',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))>'330','10',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))<'359','10',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))>'360','5',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))<'364','5',
IF(sum(IF(Role='CSA',AcdCallsDuration))/sum(IF(Role='CSA',AcdCallsAnswered))>'365','0','done')))))))))))]
Many Thanks once again,
Richard
Richard,
Writing the huge expression in object is generally not advice able and this will badly eat up your system memory.
If your Dimensions for this expression are frozen, you could calculate this on back end and use interval match function to map your buckets, but if you want to calculate these buckets on fly with regards to user selection then I don't see any option beyond writing expression on objects. If you use set analysis while writing these expressions might effectively improve the performance.
- Sridhar