# Qlik Sense App Development

New Contributor III

## Calculate with Grouped (aggregated) variables during load

Hi,

I am quite new using Qlik Sense. What I have done so far is to create a pivot table (see screenshot) showing some geographical areas in the rows and the corresponding score for each number of citizens (for 5 years) in the columns.

The formula for the first column (ERWERB_2012) is:

(Sum(ERWERB_2012)/Max(TOTAL Aggr(Sum(ERWERB_2012), LEITBEREICH)))*10

ERWERB_2012 = the number of citizens in 2012

LEITBEREICH = the geographical area

What the formula does: I divide the number of citizens in each area by the max number of citizens of all areas.

I would need these pivot table results right on the table level, as I can't use these pivot table results outside the pivot table.

Is there a possibility to do this while loading the data? The loaded data table should look like the pivot table in the screenshot.

Thanks,

Florian

9 Replies
MVP

## Re: Calculate with Grouped (aggregated) variables during load

Hi Florian usually will be better having a field called ERWERB related with a calendar table that gives the year of each record. And, if you're using a Sum it's beacuse there are many records for each LEITBEREICH and year, isn't?

Beside that, the not mess this much I think you can calculate this in script using mappings to retrieve the max ERWERB_YEAR by LEITBEREICH, ie:

// Retrieve max value for each year

For vYear=2012 to 2016

tmpMax:

Max(ERWERB_\$(vYear)) as maxERWERB

Sum(ERWERB_\$(vYear)) as ERWERB_\$(vYear)

Resident DataTable

Group by LEITBEREICH;

NEXT

// create mapping

mapMax:

maxERWERB

resident tmpMax;

DROP Table tmpMax;

// Create the table with results

Result:

Sum(ERWERB_2012)/Applymap('mapMax', 2012) *10 as result2012

Sum(ERWERB_2013)/Applymap('mapMax', 2013) *10 as result2013

...

Resident DataTable

Group by LEITBEREICH;

*Not tested*

New Contributor III

## Re: Calculate with Grouped (aggregated) variables during load

Hey Ruben,

I managed to include this in my syntax and it worked!

The result is exactly what I need! Now I only have to adapt this to the other variables.

One last question:
Is it possible to use variables, like you did it with \$year, to define a filter in the front end and start the LOAD script according to the filter chosen in the front end?

Thanks and best,

Florian

MVP

## Re: Calculate with Grouped (aggregated) variables during load

I know it can be done in Qlikview, not sure if I made this in Sense but most probably it should work.

\$(VariableName) is converted to the content of VariableName

New Contributor III

## Re: Calculate with Grouped (aggregated) variables during load

Hi Ruben,

ok, I will check this.

Concerning the syntax you wrote. Beside the variable ERWERB, there a many other variables I would like to calculate according to your syntax.

Please find below your syntax as well as the list of the variables I would need to import as well:

-------------------------------------

ROHDATEN:

PLZ,

LEITBEREICH,

ERWERB_2012,

ERWERB_2013,

ERWERB_2014,

ERWERB_2015,

ERWERB_2016,

BETRIEBE_2012,

BETRIEBE_2013,

BETRIEBE_2014,

BETRIEBE_2015,

BETRIEBE_2016,

EINWOHNER_2012,

EINWOHNER_2013,

EINWOHNER_2014,

EINWOHNER_2015,

EINWOHNER_2016,

EINWOHNER_AB60_2012,

EINWOHNER_AB60_2013,

EINWOHNER_AB60_2014,

EINWOHNER_AB60_2015,

EINWOHNER_AB60_2016,

GENEHMIGUNGEN_TOTAL_2012,

GENEHMIGUNGEN_TOTAL_2013,

GENEHMIGUNGEN_TOTAL_2014,

GENEHMIGUNGEN_TOTAL_2015,

GENEHMIGUNGEN_TOTAL_2016,

GENEHMIGUNGEN_WOHNBAU_2012,

GENEHMIGUNGEN_WOHNBAU_2013,

GENEHMIGUNGEN_WOHNBAU_2014,

GENEHMIGUNGEN_WOHNBAU_2015,

GENEHMIGUNGEN_WOHNBAU_2016,

GENEHMIGUNGEN_GEWERBE_2012,

GENEHMIGUNGEN_GEWERBE_2013,

GENEHMIGUNGEN_GEWERBE_2014,

GENEHMIGUNGEN_GEWERBE_2015,

GENEHMIGUNGEN_GEWERBE_2016,

GENEHMIGUNGEN_EFH_2012,

GENEHMIGUNGEN_EFH_2013,

GENEHMIGUNGEN_EFH_2014,

GENEHMIGUNGEN_EFH_2015,

GENEHMIGUNGEN_EFH_2016,

GENEHMIGUNGEN_MFH_2012,

GENEHMIGUNGEN_MFH_2013,

GENEHMIGUNGEN_MFH_2014,

GENEHMIGUNGEN_MFH_2015,

GENEHMIGUNGEN_MFH_2016,

MFH_ETAGE_1_2012,

MFH_ETAGE_1_2013,

MFH_ETAGE_1_2014,

MFH_ETAGE_1_2015,

MFH_ETAGE_1_2016,

MFH_ETAGE_2_2012,

MFH_ETAGE_2_2013,

MFH_ETAGE_2_2014,

MFH_ETAGE_2_2015,

MFH_ETAGE_2_2016,

MFH_ETAGE_3_2012,

MFH_ETAGE_3_2013,

MFH_ETAGE_3_2014,

MFH_ETAGE_3_2015,

MFH_ETAGE_3_2016,

MFH_ETAGE_4_2012,

MFH_ETAGE_4_2013,

MFH_ETAGE_4_2014,

MFH_ETAGE_4_2015,

MFH_ETAGE_4_2016,

MFH_ETAGE_AB5_2012,

MFH_ETAGE_AB5_2013,

MFH_ETAGE_AB5_2014,

MFH_ETAGE_AB5_2015,

MFH_ETAGE_AB5_2016,

MFH_ETAGE_AB3_2012,

MFH_ETAGE_AB3_2013,

MFH_ETAGE_AB3_2014,

MFH_ETAGE_AB3_2015,

MFH_ETAGE_AB3_2016,

BESCHAEFTIGUNG_2012,

BESCHAEFTIGUNG_2013,

BESCHAEFTIGUNG_2014,

BESCHAEFTIGUNG_2015,

BESCHAEFTIGUNG_2016,

KAUFKRAFT_2012,

KAUFKRAFT_2013,

KAUFKRAFT_2014,

KAUFKRAFT_2015,

KAUFKRAFT_2016

FROM [lib://Ordner Externe Daten/Import_Qlik.xlsx]

(ooxml, embedded labels, table is Tabelle1);

// Retrieve max value for each year

For vYear=2012 to 2016

tmpMax:

Max(ERWERB_\$(vYear)) as maxERWERB;

Sum(ERWERB_\$(vYear)) as ERWERB_\$(vYear)

Resident ROHDATEN

Group by LEITBEREICH;

NEXT

// create mapping

mapMax:

maxERWERB

resident tmpMax;

DROP Table tmpMax;

// Create the table with results

Result:

Sum(ERWERB_2012)/Applymap('mapMax', 2012) *10 as ERWERB_2012,

Sum(ERWERB_2013)/Applymap('mapMax', 2013) *10 as ERWERB_2013,

Sum(ERWERB_2014)/Applymap('mapMax', 2014) *10 as ERWERB_2014,

Sum(ERWERB_2015)/Applymap('mapMax', 2015) *10 as ERWERB_2015,

Sum(ERWERB_2016)/Applymap('mapMax', 2016) *10 as ERWERB_2016

Resident ROHDATEN

Group by LEITBEREICH;

-----------------------

Can you tell me how to adapt this script to import / calculate all variables that way?

Thanks,

Florian

New Contributor III

## Re: Calculate with Grouped (aggregated) variables during load

Hi,

I would like to change the syntax in my previous post from:

For each vYear in 2012, 2013

tmpMax:

Max(ERWERB_\$(vYear)) as MAXIMALWERT;

Sum(ERWERB_\$(vYear)) as ERWERB_\$(vYear)

Resident HEINZE_ROHDATEN

Group by LEITBEREICH;

NEXT

to:

For each vYear in ERWERB_2012, ERWERB_2013

tmpMax:

Max(\$(vYear)) as MAXIMALWERT;

Sum(\$(vYear)) as \$(vYear)

Resident HEINZE_ROHDATEN

Group by LEITBEREICH;

NEXT

But unfortunately, is crushes my syntax when I change it that way. Could you tell my why?

Thanks,

Florian

MVP

## Re: Calculate with Grouped (aggregated) variables during load

Sorry, no time right now to look for a solution but I was thinking in somethin like you are doing.

If you sustitute the valriable with it's contects you can see where there can be an error:

For each vYear in ERWERB_2012, ERWERB_2013

tmpMax:

LOAD ERWERB_2012 as KENNZAHL, // I suppose this should store only the year number

Max(ERWERB_2012) as MAXIMALWERT;

Maybe with:

For each vYear in ERWERB_2012, ERWERB_2013

tmpMax:

LOAD Subfield('\$(vYear)', '_', -1) as KENNZAHL,

Max(\$(vYear)) as MAXIMALWERT;

New Contributor III

## Re: Calculate with Grouped (aggregated) variables during load

Hi,

no worries, you have been more than helpful! Thank you very much!

I managed to finalize the syntax so that instead of the year, all variables will be saved in the mapping file:

// Retrieve max value for each year

For each vYear in 'ERWERB_2012', 'ERWERB_2013'

tmpMax:

Max(\$(vYear)) as MAXIMALWERT;

Sum(\$(vYear)) as \$(vYear)

Resident HEINZE_ROHDATEN

Group by LEITBEREICH;

NEXT

// create mapping

mapMax:

MAXIMALWERT

resident tmpMax;

// DROP Table tmpMax;

// Create the table with results

Result:

Sum(ERWERB_2012)/Applymap('mapMax', 'ERWERB_2012') *10 as SCORE_ERWERB_2012,

Sum(ERWERB_2013)/Applymap('mapMax', 'ERWERB_2013') *10 as SCORE_ERWERB_2013

Resident HEINZE_ROHDATEN

Group by LEITBEREICH;

Thank you very much for your help!

Florian

MVP

## Re: Calculate with Grouped (aggregated) variables during load

Hi Florian, how you going with this?

Just to comment that similar technique can be used to create the script using a variable, like:

SET vScript ='LEITBEREICH'

For each vField in 'ERWERB_2012', 'ERWERB_2013'

SET vScriptRow = Sum(\$(vField))/Applymap('mapMax', '\$(vField)') *10 as SCORE_\$(vField);

SET vScript =\$(vScript),

\$(vScriptRow);

Next

....

*not tested (in particular the SET/LET) but I have done things like this reading the field list from a file

New Contributor III

## Re: Calculate with Grouped (aggregated) variables during load

Hi Ruben,

You are absolutely right with the idea. I will edit my syntax accordingly.

But at the moment, I am thinking about your previous post when you suggested only to save the years:

For each vYear in ERWERB_2012, ERWERB_2013

tmpMax:

LOAD Subfield('\$(vYear)', '_', -1) as KENNZAHL,

Max(\$(vYear)) as MAXIMALWERT;

The reason is that I need to calculate the trend for each single row. Unfortunately, it seems that I first have to change the data structure: