Skip to main content
Announcements
Qlik Connect 2025: 3 days of full immersion in data, analytics, and AI. May 13-15 | Orlando, FL: Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
andrea90casa
Creator
Creator

Vdim Issue

Hi at all,

I have a field with a several codes concatenated and separated by semicolon. This field is called Variables and for example he has these values:

1) AAA;VDIM=125~54~45,LLL

2)VDIM=100~45~55;CCC;CCC

3)AAA;BBB;VDIM=100~58~63

....

....

What i would like to do is to create a second field in the script that give to me only the value VDIM=....~....~.... for any records.

I have tried this formula:

SubField(Variables,';',1)

That gives to me the follow results for the three records:

1) AAA

2) VDIM=100~45~55

3)AAA

I have created this because i wanted to use this second formula that extract the string that i need if the result is VDIM=

IF(

Left(SubField(Variables,';',1),5) = 'VDIM=',

SubField(Variables,';',1),

SubField(Variables,';',2)

)

But i would like to create an automatic formula that starts to find where is the position of VDIM= and then estract only the data that I need. So the logic should be this one:

a = 1

IF

Left(SubField(Variables,';',a),5) = 'VDIM='

IS TRUE THEN

SubField(Variables,';',a)

ELSE

a + 1

AND SO ON

Is there a way in order to do it? Or there are other ways in order to reach the same result?

1 Solution

Accepted Solutions
sunny_talwar

Here you go...

Table:

LOAD Field,

If(Len(Trim(TextBetween(Field & ';', 'VDIM=', ';'))) > 0, 'VDIM=' & TextBetween(Field & ';', 'VDIM=', ';')) as NewField;

LOAD * INLINE [

    Field

    AAA;VDIM=125~54~45,LLL

    VDIM=100~45~55;CCC;CCC

    AAA;BBB;VDIM=100~58~63

    AAA

];

View solution in original post

8 Replies
sunny_talwar

Try this

Table:

LOAD Field,

'VDIM=' & TextBetween(Field, 'VDIM=', ';') as NewField;

LOAD * INLINE [

    Field

    AAA;VDIM=125~54~45,LLL

    VDIM=100~45~55;CCC;CCC

    AAA;BBB;VDIM=100~58~63

];

Capture.PNG

andrea90casa
Creator
Creator
Author

Hi Sunny thank you very much for your help.  I tried but it works only for one records, the other gives me only VDIM= and not the value that i need:

1)VDIM=125~54~45

2)VDIM=100~45~55

3)VDIM=100~58~63

Andrea

sunny_talwar

My bad, I missed a key thing here (in red below)... try this

Table:

LOAD Field,

'VDIM=' & TextBetween(Field & ';', 'VDIM=', ';') as NewField;

LOAD * INLINE [

    Field

    AAA;VDIM=125~54~45,LLL

    VDIM=100~45~55;CCC;CCC

    AAA;BBB;VDIM=100~58~63

];

andrea90casa
Creator
Creator
Author

Thanks Sunny,

Sometimes it happen that field variables doesn't have a VDIM=.... but only other text like AAA, or sometimes the records is empty .

In that case i can use the same formula or i have to add IF statement or somethin else more efficient?

Andrea

sunny_talwar

As long as this gives you the right output (I am guessing it would give null for the NewField in those cases) for the cases you mentioned, I would just use this and not look for alternatives....

andrea90casa
Creator
Creator
Author

Yes i checked and when there is only one record like VDIM=....~....~ the output is correct, when the record is for example AAA then the output it is not correct because it gives VDIM=

sunny_talwar

Here you go...

Table:

LOAD Field,

If(Len(Trim(TextBetween(Field & ';', 'VDIM=', ';'))) > 0, 'VDIM=' & TextBetween(Field & ';', 'VDIM=', ';')) as NewField;

LOAD * INLINE [

    Field

    AAA;VDIM=125~54~45,LLL

    VDIM=100~45~55;CCC;CCC

    AAA;BBB;VDIM=100~58~63

    AAA

];

andrea90casa
Creator
Creator
Author

Thank you so much Sunny