有没有办法使用CUST_DDA端口的值作为查找的输入端口?

时间:2017-12-01 14:03:49

标签: informatica

我正在尝试使用Lookup转换根据端口ACCTCUST_DDA表中提取ACCT_ID,端口SUBSTR_ACCT_ID = IN_CUST_DDA 是表达式的输出端口。 我正在使用sqloverride,如下所示。初始查找条件:

SELECT 
ACCT.ACCT_ID as ACCT_ID, 
ACCT.ALT_ACCT_ID as ALT_ACCT_ID, 
substr(acct.acct_id,-1*(length(IN_CUST_DDA))) as SUBSTR_ACCT_ID 
FROM ACCT 
WHERE ACCT.ALT_ACCT_ID LIKE '%'||TO_CHAR(IN_CUST_DDA) 
AND ACCT.ACCT_ID LIKE '%'||TO_CHAR(IN_CUST_DDA)

覆盖:

angular
.module('templates', [])
.run(['$templateCache', function ($templateCache) { 
$templateCache.put('get-time/get-time.html', '<div style="background-color:darkgray;"><h1>Get Time</h1><p>The time is: {{time}} <img src="/Areas/Admin/assets/img/clock.png" width="100"></p></div>'); }]);

由于错误,上面的sql覆盖失败:ORA-00904:“IN_CUST_DDA”:标识符无效

有没有办法将CUST_DDA端口的值用作查找的输入端口。 CUST_DDA不是属于ACCT表的字段。有没有办法做到这一点。

感谢。

3 个答案:

答案 0 :(得分:0)

从覆盖中我可以看到您尝试将 IN_CUST_DDA 转换为CHAR,同时在长度中使用 IN_CUST_DDA

可能是导致问题的长度函数,因为长度函数可以与字符串一起使用。

答案 1 :(得分:0)

为了在查询覆盖中使用CUST_DDA(来自源代码)。您需要使用覆盖中的公共字段将查询表与源连接起来。

您无法以您提到的方式使用该端口。当您运行工作流时,informatica集成服务将在数据库中运行查找覆盖查询并将数据导入缓存文件(这就是您收到错误“IN_CUST_DDA”:无效标识符的原因。)。缓存文件准备就绪后,它将应用条件,然后为您获取输出。

如果你不清楚这个

,请告诉我

此致 拉吉

答案 2 :(得分:0)

要实现此目的,您需要将查找配置为非缓存,因此将为每个输入行执行查询。请注意,这会降低性能。 接下来,您需要使用不同的语法,将输入端口封闭在问号中。这是一个example。在你的情况下它应该是这样的(这可能需要一点调整):

SELECT 
ACCT.ACCT_ID as ACCT_ID, 
ACCT.ALT_ACCT_ID as ALT_ACCT_ID, 
substr(acct.acct_id,-1*(length(?IN_CUST_DDA?))) as SUBSTR_ACCT_ID 
FROM ACCT 
WHERE ACCT.ALT_ACCT_ID LIKE '%'||TO_CHAR(?IN_CUST_DDA?) 
AND ACCT.ACCT_ID LIKE '%'||TO_CHAR(?IN_CUST_DDA?)