【问题标题】:Is there a way to use value from CUST_DDA port as input port for lookup?有没有办法将 CUST_DDA 端口的值用作查找的输入端口?
【发布时间】:2017-12-01 14:03:49
【问题描述】:

我正在尝试使用查找转换从基于端口CUST_DDAACCT 表中提取 ACCT_ID,该端口是表达式的输出端口。 我正在使用如下的 sqloverride。初始查找条件:

SUBSTR_ACCT_ID = IN_CUST_DDA

覆盖:

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)

由于以下错误,上述 sql 覆盖失败​​:ORA-00904: "IN_CUST_DDA": invalid identifier

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

谢谢。

【问题讨论】:

    标签: informatica


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      如果您对此不清楚,请告诉我

      问候 拉杰

      【讨论】:

        【解决方案3】:

        要实现这一点,您需要将查找配置为非缓存,因此将为每个输入行执行查询。请注意,这会大大降低性能。 接下来,您需要使用一些不同的语法,将输入端口用问号括起来。这是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?)
        

        【讨论】:

          猜你喜欢
          • 2014-05-31
          • 1970-01-01
          • 2021-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-17
          相关资源
          最近更新 更多