我是informartica的新手。请你帮我解决这个问题。
我有一个包含2个类别的列表。
硬检查:如果列为null,那么该记录不应该流到目标并且应该记录在错误表中(不是信息中的内置关系,我打算使用规范化器创建单独的错误表)
软检查:如果列为null,则记录应该转到异常以及目标表
我还想在错误表中进行重复检查,我希望在名为description的列中使用列名。
我知道在表达式中使用ERROR函数来检查not null。但是 我还想捕获带有重复项的记录并显示空记录。
示例:
record 1 has abc,wer column as null (soft check column)
record 5 has def column as null ( hard check column)
错误表示例:
date id reason description
-----------------------------------------------
1/2/2014 10 duplicate record duplicate
1/3/2014 1 null abc,wer
1/4/2014 5 null def
很抱歉在解释要求时不清楚。我已经在不同的映射中处理了重复的场景。
以下是硬/软检查的要求:
硬检查:记录不应流到目标表(仅限异常表)
软检查:记录应该流向目标表以及异常表
硬检查栏:Tarnsid
Soft Chech Column:Date Date2
Position_id trans_id Date Date2
1 abc123 31-dec 31-dec
2 abc1234 31-dec 31-dec
3 abc12345 31-dec 31-dec
4 31-dec 31-dec
5 abc 123456
6 abc 1234567
Position_id trans_id Date1 Date2
1 abc123 31-dec 31-dec
2 abc1234 31-dec 31-dec
3 abc12345 31-dec 31-dec
5 abc 123456
Position_id description table_name Column_Name Check
4 transid is null Source table transid Hardcheck
5 Date,Date2 is null Source table Date,Date2 SoftCheck
6 Date is null Source table Date,Date2 SoftCheck
加载到目标表时检查是否检查= Hardcheck in 然后它将不会流向目标。
请你帮我解释填充异常表的逻辑。
答案 0 :(得分:0)
在表达式转换中,您可以执行以下操作:
o_check:= IIF(ISNULL(trans_id),'Hardcheck',IIF(ISNULL(date1) OR ISNULL(date2),'Softcheck','No Error'))
v_col_nm:= IIF(ISNULL(trans_id),'transid','')
||IIF(ISNULL(date1),',date1','')
||IIF(ISNULL(date2),',date2','')
o_col_nm:= v_col_nm
o_description:= v_col_nm||' is null'
这将为Exception表创建输出列。现在你可以分别为Target和Exception表放置一个带有两个组的路由器,组条件应如下所示:
目标:IN(o_check, 'No Error', 'Softcheck')
例外情况:o_check != 'No Error'
将适当的列连接到目标和异常表。