Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
simonb2013
Creator
Creator

Set Analysis not recognising current filter

I have 1 single table of data in my app.
3 fields of relevance:

  • ShipTo           (A customer number that I am COUNTing)
  • DlvryStatus  (A Status of one of : A,I,T)
  • LBStatus         (A Status of one of : Active, Inactive, T)

Both of those status fields are directly aligned:  A =Active, I=Inactive, T=T

So I wanted to count the ShipTo, that are Active.
Was getting some unexpected results, so now testing this 2 ways :

=Count(distinct {$<DlvryStatus={"A"}>} ShipTo)
=Count(distinct {$<LBStatus={"Active"}>} ShipTo)

Both 'should' behave identically.
Both give a correct count with no selections made in the UI. (they count ShipTo that have 'A' or 'Active')

However, if I filter DlvryStatus="I" , the DlvryStatus expression above still gives a value, even though I have explicitly filtered on value 'I' , and the expression should only count when 'A'.
At the same time, the LBStatus expression now reads '0' (correctly)

This works in reverse also: if I filter LBStatus="Inactive", then the LBStatus expression still shows full value, yet the DlvryStatus expression shows '0'.

Maybe I've been at this too long, but these are simple basic expressions that I am struggling to understand what's going on !!

Attaching a Screenshot:
Top 2 boxes on left are text boxes showing Set Analysis Expression with resulting number.
Top 2 boxes on right are filters for the 2 Status fields (filtered on LBStatus="Inactive")
Bottom Left: straight table
Bottom right :  Pivot showing mapping between the 2 Status Fields.

Really grateful if someone could point out what I am not seeing here !!

Thanks

 

 

1 Solution

Accepted Solutions
sunny_talwar

That is how the syntax is built. and if you are not looking for this behavior, then there is a work around. To use * before = and now it will honor your selection.

 

Count({$<DlvryStatus *= {"A"}>} ShipTo)

 

View solution in original post

5 Replies
dplr-rn
Partner - Master III
Partner - Master III

if you use set analysis DlvryStatus={"A"} then DlvryStatus is explicitly set i.e. selection of a DlvryStatus does not effect the expression but any other expressions may effect it
sunny_talwar

May be you need this

=Count(DISTINCT {$<DlvryStatus *= {"A"}>} ShipTo)
=Count(DISTINCT {$<LBStatus *= {"Active"}>} ShipTo)
simonb2013
Creator
Creator
Author

I hear you, but  confusing/conflicting with the Qlik documentation.

Set Expressions

Example : 

{$<Year={2009}>}

This set expression contains an identifier $, and the modifier Year={2009}. This example does not include an operator. The set expression is interpreted as: "All records in the current selection that belong to the year 2009".

So if I filter on DlvryStatus='I',  using a filter pane, then my 'current selection'  no longer contains any 'A' values.
My set expression :

Count( {$<DlvryStatus={"A"}>} ShipTo)

   should then give me "All records in the current selection that belong to the DlvryStatus 'A'"   
.... and from the previous filter pane action, there are no 'A's to count !

 

Sorry if I'm circling around the same point ... I just don't get the logic of  asking it to count records that match a specific value,  but then it counts them even if they are not in the current set !?

 

 

sunny_talwar

That is how the syntax is built. and if you are not looking for this behavior, then there is a work around. To use * before = and now it will honor your selection.

 

Count({$<DlvryStatus *= {"A"}>} ShipTo)

 

UncleRiotous
Creator
Creator

This really dug me out of a major problem today. Is there anywhere that explains when you'd use +=, -=, *= or /= and what they mean.