Qlik Community

Ask a Question

App Development

Discussion board where members can learn more about Qlik Sense App Development and Usage.

Announcements
April 22, 2PM EST: Learn about GeoOperations in Qlik Sense SaaS READ MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
ravishinge
Creator
Creator

Create For loop for 36 Months

Hello Guys,

Could you please let me know how do I create a

For loop for 36 months .

Thanks,

Ravi

1 Solution

Accepted Solutions
petter
MVP
MVP

In a load script you can create a FOR loop like this:

FOR month=1 TO 36

   LOAD

        AddMonths(MakeDate(2018,1,1),month-1) AS Month;

        ......

   AUTOGENERATE 1;

NEXT

In a visualization you can use the ValueLoop()-function to generate within an expression:

AddMonths(MakeDate(2018,1,1), ValueLoop(0,35))     // to be used for instance in a calculated dimension.

View solution in original post

11 Replies
petter
MVP
MVP

In a load script you can create a FOR loop like this:

FOR month=1 TO 36

   LOAD

        AddMonths(MakeDate(2018,1,1),month-1) AS Month;

        ......

   AUTOGENERATE 1;

NEXT

In a visualization you can use the ValueLoop()-function to generate within an expression:

AddMonths(MakeDate(2018,1,1), ValueLoop(0,35))     // to be used for instance in a calculated dimension.

View solution in original post

ravishinge
Creator
Creator
Author

Thanks for replying Petter ,

FOR month=1 TO 36

I have to use column name like Duration. How do I use this column DURATION instead of 1 to 36 . ?

DURATION column has value of 36 . So I want For loop starting from 1st month to 36th month.

So  I need something  as mentioned below .

FOR x=1 to "DURATION"


Thanks,

Ravi

petter
MVP
MVP

So the Duration belongs to a table with many rows right? Do you want 36 times the number of rows? Need to know more about the table structure you have and what kind of table structure you need to produce....

ravishinge
Creator
Creator
Author

hello ,

here is my code :-

[DataNew1]:

LOAD

    "Product Line",

    "Impact month",

    "Duration"

FROM [lib://AttachedFiles/Complexity_Mix.xlsx]

(ooxml, embedded labels, header is 1 lines, table is Model);

FOR month=1 TO 36  (Here 36 is the value in Column "Duration" ) , This value may change so I wanted it to be dynamic.

So I want For loop starting from 1st month to 36th month.

FOR x=1 to "DURATION" ,   I want to use column name in the FOR LOOP  not the numbers .


Thanks,

Ravi

petter
MVP
MVP

So what will be the variation for each of the 36 months? One monts difference? Anything else?

petter
MVP
MVP

You can use while to iterate a number of times and produce many rows:

[DataNew1]:

LOAD

    "Product Line",

    AddMonths("Impact month",IterNo()-1) AS Month,

    "Duration"

FROM [lib://AttachedFiles/Complexity_Mix.xlsx]

(ooxml, embedded labels, header is 1 lines, table is Model)

WHILE IterNo()<=Duration;

I assume here that "Impact month" is a real date and not just a mont number or month name...

ravishinge
Creator
Creator
Author

Yes Yes one month difference .

ravishinge
Creator
Creator
Author

Thanks ,

Could you please Use FOR LOOP ?

petter
MVP
MVP

That's exactly what I did in my very first response. If you tell us what your source table and result table should look luke it would be easier to give a good suggestion or solution.