【发布时间】:2014-07-17 15:44:59
【问题描述】:
我有一个源表:S1 S2 S3 S4
Hi There SSN1 SSN2
其中 S1、S2、S3 和 S4 是列名。
同样有一个目标表,它具有三个字段:T1 T2 T3
我有另一个表如下:Function Target_Column
concat(S1,S2) T1
substr(S3,1,3) T2
substr(S3,3,1) T3
我想要这样一个映射,它可以根据表中存在的函数获取函数名称并映射到指定的目标列。运行映射后,我现在的目标表将是:T1 T2 T3
HiThere SSN 1
我怎样才能做到这一点?
我尝试在 FUNCTION 列上使用查找,该列将在输出中包含 1 列,其中包含所有函数和目标表名称的串联字符串。所以我的查找输出如下所示:concat(S1,S2),T1::substr(S3,1,3),T2::substr(S3,3,1),T3
然后我将它与源端口 S1 S2 S3 S4 一起传递给 java 转换以进行处理。现在不知道如何进行。
我尝试使用invokeJExpression。
我用 :: 作为分隔符分割了我的字符串,并将其存储在数组 arr1 中。
所以我有 arr1[0]=concat(S1,S2),T1
arr1[1]=substr(S3,1,3),T2
arr1[2]=substr(S3,3,1),T3
现在我运行了这个 trhough 循环并再次使用 , 作为我的分隔符将其拆分并存储到 arr2 中。
所以我的 arr1[0] 的 arr2 是这样的:arr2[0]=concat(S1,S2)
arr2[1]=T1
现在,如果我使用 InvokeJExpression,我会将其结果分配给什么? 我希望我的表达式 concat(S1,S2) 被处理并映射到现在位于 arr2[1] 中的 T1。这就是我卡住的地方。
【问题讨论】:
-
假设与表的连接没有问题,您应该对 Function 列进行一些字符串操作。函数名称和参数是否已知?如果是这样,查找表可能是解决方案。到目前为止,您尝试过什么?
-
我认为您也可以摆脱查找表...只需正确排列数据并操作一点函数字符串即可获取函数和参数。
-
要求澄清:这些表在数据库中吗?
-
是的。我正在使用 Oracle 11g 数据库。
-
我尝试在
FUNCTION列上使用查找,该列将在输出中包含 1 列,其中包含所有函数和目标表名称的串联字符串。因此,我的查找输出将如下所示:concat(S1,S2),T1::substr(S3,1,3),T2::concat(S3,3,1),T3然后我将其与源端口S1 S2 S3 S4一起传递给 Java 转换以进行处理。现在不知道如何进行。
标签: java informatica informatica-powercenter