Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
poklegoguy
Creator
Creator

Find the count of rows that matched the conditions in Pick Match Value List

I created a table that looked something as below in Qlik Sense

poklegoguy_1-1721289600664.png

I don't have the metrics titles in my data model, thus, I used value list as the dimension and the expression is as below:

ValueList('Sales', 'Customer', 'Profit')

For the measures, the 'Values' column have to be calculated and the 'Targets' column is static. Below are the expressions I used:

Pick(Match(ValueList('Sales', 'Customer', 'Profit'), 'Sales', 'Customer', 'Profit'),
SUM(Sales), SUM(Customer), SUM(Profit))

Pick(Match(ValueList('Sales', 'Customer', 'Profit'), 'Sales', 'Customer', 'Profit'),
'>=200', '>=50', '>=50')

Here's the tricky part, I need to find and display the number of metrics that have and haven't met the target, this is what I have tried so far:

SUM(AGGR(Pick(Match(ValueList('Sales', 'Customer', 'Profit'), 'Sales', 'Customer', 'Profit'),
IF(SUM(Sales) >= 200, 1, 0), IF(SUM(Customer) >= 50, 1, 0), IF(SUM(Profit) >= 50, 1, 0)),
ValueList('Sales', 'Customer', 'Profit'), 'Sales', 'Customer', 'Profit')))

Unfortunately, it doesn't work. Can anyone please guide me on how can I achieve this or what is the best way to create a table as the screenshot I shared above so that the expressions wouldn't be too hardcoded so I can find the number of metrics that met the target easier? Appreciate all the help!

Labels (1)
1 Solution

Accepted Solutions
poklegoguy
Creator
Creator
Author

Managed to find a way to find the number of metrics that meet the target, not the cleanest way but still suffice for now. Just swap the 1 and 0 for the number of metrics that doesn't meet the target.

RANGESUM(IF(SUM(Sales) >= 200, 1, 0), IF(SUM(Customer) >= 50, 1, 0), IF(SUM(Profit) >= 50, 1, 0))

View solution in original post

4 Replies
marcus_sommer

Just try:

Match(ValueList('Sales', 'Customer', 'Profit'), 'Sales', 'Customer', 'Profit'),
IF(SUM(Sales) >= 200, 1, 0), IF(SUM(Customer) >= 50, 1, 0), IF(SUM(Profit) >= 50, 1, 0))

poklegoguy
Creator
Creator
Author

Hi @marcus_sommer, thanks for the reply. I think there's some error in the expression you shared? The if statements wouldn't run without pick function isn't it? I just need to find the total number of metrics that have reach the target and display it in a text object. Sum(Aggr(xxxx,ValueList())) doesn't seem to work for me.

poklegoguy
Creator
Creator
Author

Managed to find a way to find the number of metrics that meet the target, not the cleanest way but still suffice for now. Just swap the 1 and 0 for the number of metrics that doesn't meet the target.

RANGESUM(IF(SUM(Sales) >= 200, 1, 0), IF(SUM(Customer) >= 50, 1, 0), IF(SUM(Profit) >= 50, 1, 0))

marcus_sommer

You are right, I missed the pick() part.

Beside this fields used within a set or total statement or an aggr-dimension must be always native fields and couldn't be calculated - therefore the valuelist() couldn't be applied within the aggr(). But instead using a valuelist() you could use an island-table, like:

t: load pick(recno(), 'Sales', 'Customer', 'Profit') as Dim autogenerate 3;

and then using Dim as dimension.