Answer
# 3 |
Hi,
If I understand your question correctly, then it is like-
How to send original (distinct) records to one target
(let's say TA) and duplicates to another target (let's say
TB).
It can simply be done as follows -
In your mapping, take the source table containing whole
records (duplicates as well). Now, take 2 source qualifier
(SQ) transformations. The first SQ should
contain 'Distinct' sql query (hope you know that) and the
output ports should go to TA table.
The second SQ should contain the following sql stmt (which
filters only the duplicate records) -
-------------------------------------------
SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
FROM (SELECT empno, ename, job, mgr, hiredate, sal, comm,
deptno, ROW_NUMBER() OVER (PARTITION BY empno ORDER BY
EMPNO) rn FROM s_assign_1_emp)
WHERE rn > 1
-------------------------------------------
I am using emp table example (hope you can understand it).
Now, the output ports of the seecond SQ should go to TB
table.
This is the simplest way of doing it. Hope it will help.
If you feel any issue, please let me know at
shrikant_rps@yahoo.com
|
| Sks |
Answer
# 5 |
Hi,
Yes you can do it by using Expression transformation as
well. Infact, by using 2 SQ (source qualifier) and using
sql queries (as I explained earlier), you can perform the
required task on relational tables only (but not on flat
files etc).
In the case of flat files as source, you will need to use
Expression transformation. But you also need to use sorter
before expression (otherwise record flag will change for
every incoming record & duplicates won't be traced). The
sequence of transformations will be as follows -
Source -> SQ -> Sorter ->Expression ->Router(or 2 filters) -
>Targets
|
| Sks |