Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Conditional Left Join of Fields

Hi,

I have a fact table like so:

customer:

load

%Key1,

Year,

from ...

now I want to load and join a lookup table. This lookup has the following fields:

%key, year2011value, year2012value, year2013value

When joining, I need to pick one of the yearXXXXvalue from each row in the lookup that corresponds to the Year column of the joining row in the customer table. So I tried the following join:

left join (customer)

LOAD

  %Key1,

   pick(Year-2010,year2011value, year2012value, year2013value) as myField

FROM lookup.csv

But QV complains "file not found Year" . Apparently, It can not reference the Year column of the customer table while joining. How can this be done?

1 Solution

Accepted Solutions
jonathandienst
Partner - Champion III
Partner - Champion III

Hi

I suggest that you do a cross-table load of the lookup table into a temporary table and then join that to your fact table. Something like:

customer:

LOAD ....

TempLookup:

Crosstable (Year, Value)

LOAD %key,

     year2011value,

     year2012value,

     year2013value

FROM lookup.csv;


Left Join (customer)

LOAD %key,

     Num(Mid(Year, 5, 4)) As Year,     // get year value out of the label

     Value As myField

Resident TempLookup;


DROP Table TempLookup;



HTH

Jonathan

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein

View solution in original post

2 Replies
jonathandienst
Partner - Champion III
Partner - Champion III

Hi

I suggest that you do a cross-table load of the lookup table into a temporary table and then join that to your fact table. Something like:

customer:

LOAD ....

TempLookup:

Crosstable (Year, Value)

LOAD %key,

     year2011value,

     year2012value,

     year2013value

FROM lookup.csv;


Left Join (customer)

LOAD %key,

     Num(Mid(Year, 5, 4)) As Year,     // get year value out of the label

     Value As myField

Resident TempLookup;


DROP Table TempLookup;



HTH

Jonathan

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein
Not applicable
Author

Truly a miracle. Thank you.