Problem - How to do left outer join in tmap and only get rows from left (main) table which does not exists in right table or how to do something like select * from where not exists(select...)
Solution - There are many - but one which we have used is given below
Say you have tables as below
Current_Snapshot -
name_skey
name_desc
Previous_Snapshot -
name_skey
name_desc
What we need is all rows from current_snapshot which does not exists in previous_snapshot
- Take main flow from current_snapshot - as main row input to Tmap
- in the input component of previous_snapshot select a dummy_flag with some constant value
example - select name_skey, name_desc, "XX" dummy_flag from previous_snapshot.
Now take flow from previous_snapshot - as row lookup flow to above tmap.
In tmap - join this look up to main on name_skey and name_desc - use left outer join and all rows.
Now in output table in tmap - use expression and there put lookuprow.dummy_flag==null
What happens is that tmap will join all rows from current_snapshot to previous_snapshot and for those rows which exists in current_snapshot and not in previous_snapshot it will have dummy_flat==null and our expression filter in tmap helps us in identifying these row.
This is exactly what I'm looking for! I would love to see a screenshot, but the screenshot above seems to be broken. Would you re-post it, please?
ReplyDeletetry now
ReplyDeleteI see the screenshot now, and I think I have figured it out. (I also had to monkey with my join a bit.) Thank you for pointing me in the right direction!
ReplyDelete-- Brian
thanks for tutorials. I would love to see a screenshot, but the screenshot above seems to be broken. Would you re-post it, please?
ReplyDeleteThanks for sharing INFO about JOINS in Talend technology. Keep Sharing
ReplyDelete