Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
Luka
Contributor III
Contributor III

Creating a calculated field using another calculated field in load script

Hello community,

I am trying to create a calculated field with the use of a previous calculated field 

When i create this and Load the data, QLIK gives me an error that the "previous Calculated field" was not found

 

Example (where [TOTAL DURATION] is the field i am creating in "1" and trying to use in "2")

Calculated Field number 1:

IF([ATA DATE]='','',IF([POD DATE]='','',IF(NETWORKDAYS([ATA DATE]+1,[POD DATE]+1)<0,0,NETWORKDAYS([ATA DATE]+1,[POD DATE]+1)))) AS [TOTAL DURATION],

Calculated Field number 2:

    IF([TOTAL DURATION]='','',
    IF([TOTAL DURATION]<=3,'0 TO 3',
    IF([TOTAL DURATION]<=5,'4 TO 5',
    IF([TOTAL DURATION]<=7,'6 TO 7',
    IF([TOTAL DURATION]<=15,'8 TO 15',
    IF([TOTAL DURATION]>15,'OVER 15')))))) AS [CLOSED BUCKETS]

 

Any help is appreciated

Thanks

Labels (2)
1 Solution

Accepted Solutions
sandeep_sarawgi
Partner - Contributor III
Partner - Contributor III

Try removing the calculated field which is using another calculated field from the load script and instead put it as a preceding load.  See attached.

Sandeep Sarawgi

View solution in original post

9 Replies
ajaykakkar93
Specialist III
Specialist III

Hi,
can you share the load script or example file to work with

Please mark the correct replies as Solution. Regards, ARK
Profile| GitHub|YouTube|Extension|Mashup|Qlik API|Qlik NPrinting

marcus_sommer

It seems that you try to call it within a single load-statement which isn't possible because only fields which exists within the source are valid fields. Quite common for such cases is the use of a preceeding load. This means something like:

load *, if([TOTAL DURATION] ....) as [CLOSED BUCKETS];
load *, if(...) as [TOTAL DURATION] from Source;

- Marcus

ajaykakkar93
Specialist III
Specialist III

Hi,

Here is an example Please try this,

 

 

T1:
load * Inline [
A,B
a,2
b,10
c,7
];


TableF1:
load A,
sum(CalB) as CalB2
Group by A;
load A,
sum(B) as CalB
Resident T1
Group By A;

drop table T1;

Please mark the correct replies as Solution. Regards, ARK
Profile| GitHub|YouTube|Extension|Mashup|Qlik API|Qlik NPrinting

ajaykakkar93
Specialist III
Specialist III

i have added a group by in Preceding LOAD also.

Please mark the correct replies as Solution. Regards, ARK
Profile| GitHub|YouTube|Extension|Mashup|Qlik API|Qlik NPrinting

Luka
Contributor III
Contributor III
Author

Thanks Marcus,

Do I need to load my entire data under the "Load *" or only the calculated fields?

Sounds simple enough, I will give it a try in the meantime

Luka

marcus_sommer

There may occasions in which it might be useful to split the loadings into multiple tables which are later merged or not but usually it includes the entire load. A bit more background to it could you find here: Preceding-Load.

- Marcus

Luka
Contributor III
Contributor III
Author

Thank you for the detailed response

I've attached my script - honestly very new to scripting and not sure how to use the preceding load and drop table to achieve my goal

Thanks again

Luka

sandeep_sarawgi
Partner - Contributor III
Partner - Contributor III

Try removing the calculated field which is using another calculated field from the load script and instead put it as a preceding load.  See attached.

Sandeep Sarawgi
Luka
Contributor III
Contributor III
Author

Thank you so much for your help !!