Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
MVW
Contributor III
Contributor III

Is this a bug with the new outer set analysis syntax?

It doesn't seem like this should return a (see screenshot).

{<uppercase *= {'E'}>}({<uppercase *= {'B','C','D'}>}({<uppercase *= {'A'}>}Concat(lowercase)))

Labels (1)
21 Replies
MVW
Contributor III
Contributor III
Author

They all say they have experience with these things at the RFP stage, but it is unlikely that any effort was put into reading the requirements at that stage. 

You use very similar words as those 4 groups that failed at their attempts. 2 of those groups definitely had people with 10+ years of experience with Qlik. They were sold as the top Qlik experts in the region. The project has been completed we have had a working solution for a few years that only costed ~$100k in man hours. The 4 failed attempts costed $5-$10M and either couldn't finish or were unusably slow and full of errors. 

You may defy the experiences of those 4 attempts and be right, but there is no appetite to try the same thing again and expect a different result, especially when the existing solution is working already.

Dolphin
Partner - Contributor III
Partner - Contributor III

 

Hi All,

 


@MVW wrote:

{<uppercase *= {'E'}>}({<uppercase *= {'B','C','D'}>}({<uppercase *= {'A'}>}Concat(lowercase)))

With the first two steps you get an empty set of field values for the selection. That means that all values are possible for the field 'uppercase' in the third step. The result with 'A' is correct.


I don't agree with this conclusion, although the observation is the same. Intuitively there should be no values possible for field 'uppercase' in the third step.
When leaving out the 3rd step, we get the expected result of the empty set. And just using an empty set to begin with and explicitly merging it with another set on the same level also returns an empty set as expected, instead of using all possible values for the field uppercase:
{<uppercase = {'5'}> * <uppercase = {'B'}>} Concat(lowercase) -> NULL

However as stated correctly, that's not the case for outer sets:
{<uppercase = {'5'}>} ({<uppercase *= {'B'}>} Concat(lowercase)) -> 'b'

I want to refer to this post: Outer SetAnalysis modifier ignored - Qlik Community - 2108889

It has a very simple usecase but the same issue.

Let's say Field [F2] has no value "1".

I think it needs to be made clear in the documentation how the outer and inner set expressions inherit/merge. There is a difference between:

  • 0 - as expected
    1. {<F1 = {a,b,c}, F2 = {1}>} Sum(Field)
    2. Sum({<F1 = {a,b,c}, F2 = {1}>} Field)
    3. {<F1 = {a,b,c}> * <F2 = {1}>} Sum(Field)
    4. Sum({<F1 = {a,b,c}> * <F2 = {1}>} Field)
    5. {<F1 = {a,b,c}>} Sum({<F2 = {1}>} Field)
  • Sum for all F2 values - not as expected
    1. {<F2 = {1}>} Sum({<F1 = {a,b,c}>} Field)

So, only if we inherit from an empty outer set (doesn't matter the nested level), we end up with the unexpected result. Basically there is no inheritance from (or explicitly merging with) empty outer sets. Might be as intended but definitely not intuitive and not documented.