源表和目标表相同。 1)对于源中的col1,col 2有一些值和null值然后在target中,值应该被复制到替换特定键记录的空值字段。
2)对于源中的col1,如果只有空值,那么在目标col 2中应该有-1
3)对于源中的col1,如果任何时间col1 = ABC则目标col2值必须为-2。
所以, a)源中col 1有两种类型的值:ABC和非ABC。
b)对于记录组,col 2应具有值(如果可用)或-1(如果没有可用值)。
c)对于非ABC记录,目标应为col2 = -2
[![在此处输入图像说明] [1]] [1]
映射流程是什么? 另外,如何在SQl查询中实现。
先谢谢。
SOURCE
Col1 col2
P1 123
P1 NULL
P1 NULL
P2 NULL
P3 NULL
P3 456
P4 NULL
P4 NULL
ABC NULL
TARGET
Col1 col2
P1 123
P1 123
P1 123
P2 -1
P3 456
P3 456
P4 -1
P4 -1
ABC -99
答案 0 :(得分:0)
您可以根据您描述的规则使用分析函数生成所需的目标:
99
这并没有解释你如何获得“{1}}”,但你的问题并没有解释这条规则。
答案 1 :(得分:0)
这是你能做的。在源限定符中使用以下查询:
select col1, max(col2)
from source
group by col1
在Expression转换中实现你的逻辑。例如:
out_col2 := IIF(col1='ABC','-2',
IIF(ISNULL(col2), -1, col2))
现在通过更新策略(使用DD_UPDATE)传递数据,并将列col1和out_col2连接到目标。
确保您已将col1定义为目标定义中的主键。