Skip to main content
Announcements
Qlik Community Office Hours, March 20th. Former Talend Community users, ask your questions live. SIGN UP
cancel
Showing results for 
Search instead for 
Did you mean: 
jblomqvist
Specialist
Specialist

How can I do this type of set analysis expression in the script?

Hello there,

I have the following table:

Data:
LOAD [Client number],
[Tax Network],
[Billing Partner],
[Home BU],
FinancialYear,
FinancialYear-1 as PrevFY,
FinancialYear+1 as NextFY,
Category as FYType,
Revenue,
Hours

Staff


From

data.qvd file

In the above table I am trying to create the front-end version of this expression below:

If(FinancialYear=2016,Sum({$<FinancialYear={2016}>}Revenue)*(Sum({$<FinancialYear={2015}>}Staff)*0.95)/Sum({$<FinancialYear={2015}>}Revenue)
,
If(FinancialYear=2017,(Sum({$<FinancialYear={2017}>}Revenue)*(Sum({$<FinancialYear={2015}>}Staff)*0.95))/Sum({$<FinancialYear={2015}>}Revenue)
,
If(FinancialYear=2018,(Sum({$<FinancialYear={2018}>}Revenue)*(Sum({$<FinancialYear={2015}>}Staff)*0.95))/Sum({$<FinancialYear={2015}>}Revenue)
,
If(FinancialYear=2019,(Sum({$<FinancialYear={2019}>}Revenue)*(Sum({$<FinancialYear={2015}>}Staff)*0.95))/Sum({$<FinancialYear={2015}>}Revenue)

,
Sum(Staff)))))

Does anyone know how this can be achieved in the script with the table and example above please?

3 Replies
prashantbaste
Partner - Creator II
Partner - Creator II

Hi John

Can you please tell against which dimensions you have wrote this expressions?

If [Client Number] is your dimension then you can write it as below -

Load [Client Number],

     FinancialYear,

     Sum({$<FinancialYear>}Revenue)*(Sum({$<FinancialYear={Chr(39)&(FinancialYear-1)&chr(39)}>}Staff)*0.95)/Sum({$<FinancialYear={Chr(39)&(FinancialYear-1)&chr(39)}>}Revenue)

From data.qvd

Group by

[Client Number],

     FinancialYear;

I have not tried it but it should work. Please confirm.

Hope this will be helpful for you.

--

Regards,

Prashant P Baste

petter
Partner - Champion III
Partner - Champion III

It is not possible to use Set Expressions in a load script. You will have to use Peek() and or Previous() functions to be able to pick out values from a row other than the one you are currently reading in the LOAD-statement.

swuehl
MVP
MVP

Before you start scripting, start thinking about the granularity you'll need.

An expression in a chart is in general sensitiv to user selections (e.g. in Client Number).

If you want to replicate the chart expression in the script, you would need to use an aggregation grouped by the chart's dimensions, filtered by any condition / set expression used in your chart expression, which can be VERY  demanding.

You would need to repeat this for EVERY POSSIBLE user selection that your chart will respond to (except for few cases where your expression is insensitive to user selections. Your above sample is sensitive).

I believe the complexity of your script calculation and execution time will overweigh the benefit of precalculating the values in the script.