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: 
supriyabiware
Creator
Creator

Dynamic key while joining tables? or any other solution?

Hello All,

I have a fact table - F_PLANT

I have dimension to derive the information - D_PLANT

Unfortunately the plant dimensions have new IDs whereas the fact is updated with Old IDs only. hence there is a new table created for IDs - X_PLANT_UPDATED - which has following columns

OLD_ID,

NEW_ID,

VALID_FROM,

VALID_UPTO

Now i have to derive information from dimension(with new ids) into fact(with old ids) using the table X_PLANT_UPDATED.

Any ideas?

Thanks

Supriya.

2 Replies
jonathandienst
Partner - Champion III
Partner - Champion III

This is best handled using interval match ("extended syntax"):

// Load the interval table

Update:

LOAD OLD_ID,

  NEW_ID,

  VALID_FROM,

  VALID_UPTO

FROM X_PLANT_UPDATED;

// Load the fact table. Alias the ID to OLD_ID

F_PLANT:

LOAD ID as OLD_ID,

  DATE

  ...

FROM F_PLANT;

// Match the updates using IntervalMatch

Left Join (F_PLANT)

IntervalMatch(DATE, OLD_ID)

LOAD VALID_FROM,

  VALID_UPTO,

  OLD_ID

Resident Update;

// Fetch the new ID and alias it to ID

Left Join (F_PLANT)

LOAD OLD_ID,

  NEW_ID as ID,

  VALID_FROM,

  VALID_UPTO

Resident Update;

// Clean up

DROP Table Update;

DROP Fields VALID_FROM, VALID_UPTO;


// Now load the dimension

D_PLANT:

LOAD ID

  ...

FROM D_PLANT;



This assumes that the ID field is called "ID" date field is called "DATE". Modify the script above with the correct field names if necessary.

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

Thankyou for your reply Jonathan,

As i understand , in this case we are replacing the Old IDs with New IDs matching the valid from and upto from update table , but my old ids need to stay in the table(in the ID column) since ID is joined to other facts or dimensions accordingly.

Is there any way wherein i can have both columns OLD ID and NEW ID in the fact and join the dimension using a logic?

*valid from and upto not much imp.