Qlik Community

Ask a Question

QlikView App Dev

Discussion Board for collaboration related to QlikView App Development.

Announcements
On May 18th at 10AM EDT we will answer your QlikView questions live. REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Mapping, ApplyMap or MapSubstring ?

Hello all,

I´m with a doubt about a "fiel update".

For example, I have a table:

AGES:

LOAD * INLINE [
    NAME, AGE
    JOHN, 20
    BILL, 25
    PAUL, 30
]
;

 

CORRECT:

LOAD * INLINE [
    NAME, AGE
    BILL, 55
]
;

As result, I want this:

NAME, AGE

JOHN, 20

BILL, 55

PAUL, 30.

What better way to do this ?

Best Regars,

1 Solution

Accepted Solutions
Gysbert_Wassenaar

Applymap is your friend here I think:

CORRECT:

Mapping LOAD * INLINE [
    NAME, AGE
    BILL, 55
]
;

AGES:

LOAD NAME, applymap('CORRECT',NAME,AGE) as AGE;

LOAD * INLINE [
    NAME, AGE
    JOHN, 20
    BILL, 25
    PAUL, 30
]
;

 


talk is cheap, supply exceeds demand

View solution in original post

8 Replies
Peter_Cammaert

Just one of multiple ways to do this. Add the following to the end of your script:

CORRECTED_AGES:

LOAD * RESIDENT CORRECT;

CONCATENATE (CORRECTED_AGES)

LOAD * RESIDENT AGES

WHERE NOT EXISTS(NAME);

DROP Table AGES;

RENAME Table CORRECTED_AGES TO AGES;

Best,

Peter

Not applicable
Author

Dear Peter,

I can´t use Resident in this case because I have millions rows.

For this i need a function.

Tks,

Not applicable
Author

Dear Peter,

I can´t use Resident in this case because I have millions rows.

For this i need a function.

Tks,

Gysbert_Wassenaar

Applymap is your friend here I think:

CORRECT:

Mapping LOAD * INLINE [
    NAME, AGE
    BILL, 55
]
;

AGES:

LOAD NAME, applymap('CORRECT',NAME,AGE) as AGE;

LOAD * INLINE [
    NAME, AGE
    JOHN, 20
    BILL, 25
    PAUL, 30
]
;

 


talk is cheap, supply exceeds demand

View solution in original post

Peter_Cammaert

Nice one indeed.

Peter

Not applicable
Author

Thanks Gysbert,

Now its my friend hahaha

Best Regards,

Peter_Cammaert

As a bonus: keep in mind that a PRECEDING LOAD uses resident tables as well. They're just not that visible.

As a 2nd bonus: ApplyMap is way faster than exists(), especially with lots of data.

Peter

alis2063
Creator III
Creator III

 

U Can preform Mapping load as its  faster than join

CorrectData:

Mapping LOAD
NAME,
AGE INLINE [
NAME, AGE
BILL, 55
];


Data:
Load ApplyMap('CorrectData',NAME,AGE) AS CorrectAge,
NAME;
LOAD * INLINE [
NAME, AGE
JOHN, 20
BILL, 25
PAUL, 30
];