Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
d_ankusha
Creator II
Creator II

Load Inline

Hi,

I have a load statement:

Temp:

Load * Inline [

temp

a

b

ccc

];

I want output:

temp

a

b

c

c

c

This should happen for every next value added in inline.

Can anyone suggest a solution for this. I tried using left() and keepchar() but my logic is not working out.

1 Solution

Accepted Solutions
ujjwalraja
Contributor III
Contributor III

Hi,

Try this it is working fine.

new:

Load * ,len(temp) as length Inline [

temp

a

b

cc

xy

def

ghi

];

new1:

Load temp, length as length1

Resident new

where length >1;

//let vRowCount= peek('RowCount',-1,'new1') ;

//trace $(vRowCount)

//for i=0 to $(vRowCount)

let vlength= peek('length1',-1,'new1');

do while vlength>0

P:

Load mid(temp,$(vlength),1) as nee

Resident new1;

let vlength=vlength-1;

TRACE $(vlength);

loop

TTTT:

Load temp

Resident

new where length=1;

Load nee as temp

Resident P

where len(nee)=1

Order by nee ;

Drop Tables new,new1,P;

View solution in original post

12 Replies
Anonymous
Not applicable

Did you try with mid() function?

d_ankusha
Creator II
Creator II
Author

yes, i tried that. but the main problem is that the rest of the value is not coming in next line.

MindaugasBacius
Partner - Specialist III
Partner - Specialist III

This works perfectly:

Temp:

Load * Inline [

temp

a

b

ccc

];

NoConcatenate

tmp:

LOAD *

,Len(temp) as Lenght

,RowNo() as Row

Resident Temp;

DROP Table Temp;

LET TotalRow = Peek('Row', -1, 'tmp');

FOR i = 1 to $(TotalRow)

NoConcatenate

tmp2:

LOAD *

Resident tmp

Where Row = $(i)

;

vLenght = Peek('Lenght');

vTemp = Peek('temp');

Data:

LOAD Mid('$(vTemp)', '$(vLenght)', 1) as NewTemp

,'$(vTemp)' as Temp

,'$(vLenght)' as Lenght

AutoGenerate $(vLenght);

DROP Table tmp2;

NEXT i

DROP Table tmp;

exit script;


Screenshot_1.jpg

arvind_patil
Partner - Specialist III
Partner - Specialist III

Hi Ankusha,

Is there any seprater in actual value then you can use subfield or else

left and right function.

Thanks,

Arvind Patil

d_ankusha
Creator II
Creator II
Author

no there is no separator in the values so can't use subfield.

Using left and right just gives me single value, i want the rest of the string evaluated as per the logic in next line.

d_ankusha
Creator II
Creator II
Author

this is not actually working out . if i add new value as 'def' in Temp column . you can see the below output:

Capture.PNG

ujjwalraja
Contributor III
Contributor III

Hi,

Try this code

new:

Load * ,len(temp) as length Inline [

temp

a

b

def

ghi

];

new1:

Load temp, length as length1

Resident new

where length >1;

//let vRowCount= peek('RowCount',-1,'new1') ;

//trace $(vRowCount)

//for i=0 to $(vRowCount)

let vlength= peek('length1',-1,'new1');

do while vlength>0

P:

Load mid(temp,$(vlength),1) as nee

Resident new1;

let vlength=vlength-1;

TRACE $(vlength);

loop

TTTT:

Load temp

Resident

new where length=1;

Load nee as temp

Resident P

Order by nee;

Drop Tables new,new1,P;

arvind_patil
Partner - Specialist III
Partner - Specialist III

But in some filed have 2 characters then its not work..

Thanks,

Arvind Patil

ujjwalraja
Contributor III
Contributor III

Hi,

Try this it is working fine.

new:

Load * ,len(temp) as length Inline [

temp

a

b

cc

xy

def

ghi

];

new1:

Load temp, length as length1

Resident new

where length >1;

//let vRowCount= peek('RowCount',-1,'new1') ;

//trace $(vRowCount)

//for i=0 to $(vRowCount)

let vlength= peek('length1',-1,'new1');

do while vlength>0

P:

Load mid(temp,$(vlength),1) as nee

Resident new1;

let vlength=vlength-1;

TRACE $(vlength);

loop

TTTT:

Load temp

Resident

new where length=1;

Load nee as temp

Resident P

where len(nee)=1

Order by nee ;

Drop Tables new,new1,P;