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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Use Variable for Calander Range in AutoGenerate

Hi,

I am loading a period table which just has the financial year values in which I load as follows:

PERIODS:

LOAD

     Year

FROM

$(zDataPath)\Periods.qvd(qvd);

Then to determine the amount of Years I have available I do the following:

PERIOD:

Load     

    Max(Year) - Min(Year) + 1 as YR_Range

Resident PERIODS;

Now I use this code for the Calander:

Load

    TODAY()-ROWNO()+365 AS PeriodDate,

    YEAR(TODAY()-ROWNO()+365) AS YEAR,

    MONTH(TODAY()-ROWNO()+365) AS MONTH,

    DAY(TODAY()-ROWNO()+365) AS DAY,

    YEAR(TODAY()-ROWNO()+365)*100 + MONTH(TODAY()-ROWNO()+365) AS YM,

    YEAR(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "FIN YR",

    MONTH(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "PERIOD",

    YEAR(ADDMONTHS(TODAY()-ROWNO()+365,3))*100 + MONTH(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "FIN YP"

AUTOGENERATE (365*3);

My problem is that for the AutoGenerate command I want to load the amount of years based on what is the Max - Min of Year plus 1 into a variable and use that variable for the AutoGenerate command, which should be something like this

AUTOGENERATE (365*v_Range);

Regards

Jimmy

1 Solution

Accepted Solutions
kaushiknsolanki
Partner Ambassador/MVP
Partner Ambassador/MVP

Hi,

    Try this code.

    

PERIOD:

Load     

    Max(Year) - Min(Year) + 1 as YR_Range

Resident PERIODS;

let v_Range = peek('YR_Range',0,'PERIOD');

Load

    TODAY()-ROWNO()+365 AS PeriodDate,

    YEAR(TODAY()-ROWNO()+365) AS YEAR,

    MONTH(TODAY()-ROWNO()+365) AS MONTH,

    DAY(TODAY()-ROWNO()+365) AS DAY,

    YEAR(TODAY()-ROWNO()+365)*100 + MONTH(TODAY()-ROWNO()+365) AS YM,

    YEAR(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "FIN YR",

    MONTH(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "PERIOD",

    YEAR(ADDMONTHS(TODAY()-ROWNO()+365,3))*100 + MONTH(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "FIN YP"

AUTOGENERATE (365*$(Range));

Regards,

Kaushik Solanki

Please remember to hit the 'Like' button and for helpful answers and resolutions, click on the 'Accept As Solution' button. Cheers!

View solution in original post

1 Reply
kaushiknsolanki
Partner Ambassador/MVP
Partner Ambassador/MVP

Hi,

    Try this code.

    

PERIOD:

Load     

    Max(Year) - Min(Year) + 1 as YR_Range

Resident PERIODS;

let v_Range = peek('YR_Range',0,'PERIOD');

Load

    TODAY()-ROWNO()+365 AS PeriodDate,

    YEAR(TODAY()-ROWNO()+365) AS YEAR,

    MONTH(TODAY()-ROWNO()+365) AS MONTH,

    DAY(TODAY()-ROWNO()+365) AS DAY,

    YEAR(TODAY()-ROWNO()+365)*100 + MONTH(TODAY()-ROWNO()+365) AS YM,

    YEAR(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "FIN YR",

    MONTH(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "PERIOD",

    YEAR(ADDMONTHS(TODAY()-ROWNO()+365,3))*100 + MONTH(ADDMONTHS(TODAY()-ROWNO()+365,3)) AS "FIN YP"

AUTOGENERATE (365*$(Range));

Regards,

Kaushik Solanki

Please remember to hit the 'Like' button and for helpful answers and resolutions, click on the 'Accept As Solution' button. Cheers!