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

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
helen_pip
Creator III
Creator III

Help with Pick(Sign expression

Dear Qlikview user

I am trying to change an If statement into a Pick(sign expression as I know they are more efficient than an If statement

My expression is:

If(TB_Flag = 1 and

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

<

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2))

,

chr(9660),

If(TB_Flag = 1 and

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

=

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2))

,

chr(9658),

If(TB_Flag = 1 and

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

>

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2))

,

chr(9650)

My Attempt so far is:

=Pick(Sign(TB_Flag=1 and

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

-

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2)

+2,

chr(9660), chr(9658), chr(9650))))

I get an error message of Allocated Memory allocated and was wondering if someone could kindly help em write the expression

Any help would be greatly appreciated

Kind Regards

Helen

1 Solution

Accepted Solutions
marcus_sommer

I think it should be rather look similar to this one:

=Pick(match(

     Sign(

          FirstSortedValue({<TB_Numerator={">=0"}, TB_Flag={1}>}

               Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric),

               -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric))

          -

          FirstSortedValue({<TB_Numerator={">=0"}>}

               Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric),

               -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2)),

     -1,0,1)

     chr(9660), chr(9658), chr(9650))

- Marcus

View solution in original post

4 Replies
marcus_sommer

I think it should be rather look similar to this one:

=Pick(match(

     Sign(

          FirstSortedValue({<TB_Numerator={">=0"}, TB_Flag={1}>}

               Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric),

               -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric))

          -

          FirstSortedValue({<TB_Numerator={">=0"}>}

               Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric),

               -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2)),

     -1,0,1)

     chr(9660), chr(9658), chr(9650))

- Marcus

sunny_talwar

May be this

Pick(Match(TB_Flag &

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

<

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2))

&

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

=

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2))

&

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric)))

>

Num(FirstSortedValue({<TB_Numerator={">=0"}>}Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric), -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2)), 1100, 1010, 1001), Chr(9660), Chr(9658), Chr(9650))

helen_pip
Creator III
Creator III
Author

Hi Marcus

Thank you for your help,   This has worked for me...Hopefully I can apply to most of my expressions now!

Kind Regards

Helen

helen_pip
Creator III
Creator III
Author

Thank you for your help Sunny

The following expression worked for me on this occasion

=Pick(match(

     Sign(

          FirstSortedValue({<TB_Numerator={">=0"}, TB_Flag={1}>}

               Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric),

               -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric))

          -

          FirstSortedValue({<TB_Numerator={">=0"}>}

               Aggr(Sum(TB_Numerator), TB_Fact_Date, TB_Metric),

               -Aggr(TB_Fact_Date, TB_Fact_Date, TB_Metric), 2)),

     -1,0,1)

     chr(9660), chr(9658), chr(9650))