Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Only at Qlik Connect! Guest keynote Jesse Cole shares his secrets for daring to be different. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problem with Aggr and maxstring/minstring functions

I am attaching a small sample showing the concept of what I am trying to accomplish.  Any help would be appreciated.

I am trying to count Sales - there could be a blue sale or a pink sale.   There could also be a Combo sale - both pink and blue.  I am trying to use the maxstring and minstring of the type of sale - if the min and max are blue, then it's a blue sale.  If min and max are pink, then it's a pink sale.  If min is blue and max is pink, then it's a combo sale. 

Because of the way the real data is set up, there could be blank records as well, which I have included in the data. 

I cannot get this to work 100% of the time.  Any thoughts???

Please see the Sales by Color - Not working chart.

Thanks!!!

2 Replies
swuehl
MVP
MVP

Hi,

I think I have a solution to your problem, please see attached file.

Instead of the aggr, min/maxstring and if Functions, I used indirect set analysis.

For example

count({<Customer = p({<Category={'Blue'}, Outcome={'Sale'}>} Customer)*e({<Category={'Pink'}, Outcome={'Sale'}>} Customer) >} DISTINCT Customer)

to count the blue customers.

Hope this helps,

Stefan

swuehl
MVP
MVP

me again,

I was just curious why your solution haven't worked the first place.

I think there might be two problem:

1) Blank records for Category

which are not NULL, so that Minstring will return those blank records instead of 'blue'.

To fix this you might change the Load expression into:

LOAD SalePerson, Customer, Outcome, if(Category='',Null(),Category) as Category INLINE

[....]

2)

the actual expression (here for combo):

Count(DISTINCT If([Outcome]='Sale' and not isnull(Category) and aggr(minstring([Category]), Customer) = 'Blue' and   aggr(maxstring([Category]), Customer) = 'Pink' ,Customer))

With bob, you get a match here, even you shouldn't. The two conditions for color checking are fulfilled, and you have one record with Outcome = Sale, so it's a combo? No, it is not, because you have to disregard the records which are not 'Sale' also for color checking.

Maybe you could rework this expression in a way that's correct, I assume you finally get something similar to a my set expression.

Hope this helps, too,

Stefan