Informatica Powercenter添加选择LISTAGG查询

时间:2016-07-18 13:08:51

标签: oracle informatica listagg

我已经学习了informatica powercenter。我能够在两个VIEW之间进行INNER JOIN。我在用户定义的连接中添加了INNER JOIN,但是在单击Validate时仍需要在Sql Query中进行正确的更改。在加入VIEWS时,我只需要添加到用户定义的加入吗?

这是我的问题。我有另一个VIEW,这是一对多,所以这将是我的第三个视图添加到查询。我在TOAD上运行了这个。如何将其添加到Infromatica?我是否只是避免使用Sql Query部分并将整个查询添加到用户定义的查询中? LISTAGG在Informatica工作吗?

如果不在查询LISTAGG(一对多关系)中,是否更好或者有没有办法在转换中进行表达转换?

感谢。

此查询是SELECT,LISTAGG,CASE

SELECT PERSON_ID, 
       FIRST_NAME,
       MIDDLE_NAME,
       LAST_NAME,
       LISTAGG(val,',') WITHIN GROUP (ORDER BY Table2.SKILL_SHORT_DESC )  

FROM (SELECT DISTINCT  Table1.PERSON_ID, 
       Table1.FIRST_NAME,
       Table1.MIDDLE_NAME,
       Table1.LAST_NAME,
       (case  
            when Table2.SKILL_SHORT_DESC = '1' then '1:1'
            when Table2.SKILL_SHORT_DESC = '2' then '2:2'
            when Table2.SKILL_SHORT_DESC = '3' then '3:3'
            when Table2.SKILL_SHORT_DESC = '4' then '4:4'
            when Table2.SKILL_SHORT_DESC = '5' then '5:5'
            when Table2.SKILL_SHORT_DESC = '6' then '6:6'
            when Table2.SKILL_SHORT_DESC = '7' then '7:7'
            when Table2.SKILL_SHORT_DESC = '8' then '8:8'
            when Table2.SKILL_SHORT_DESC = '9' then '9:9'


            else ''

        end) as val  

FROM Table1
LEFT JOIN Table2

ON Table2.PERSON_ID = Table1.PERSON_ID
)
GROUP BY PERSON_ID,FIRST_NAME,MIDDLE_NAME, LAST_NAME

2 个答案:

答案 0 :(得分:0)

是的,LISTAGG应该有效。假设您正在使用oracle,它应该工作10.x和更高版本。坦率地说,Informatica并不关心你编写的SQL是什么,而是它发布SQL的数据库很重要。你可以写'我是蝙蝠侠'而infa将返回'无效语法'。

科希克

答案 1 :(得分:0)

请按照以下步骤操作,

  1. 从表中获取任何虚拟源
  2. 在源限定符中,删除所有端口并创建所需的端口
  3. 在属性-> Sql查询中,添加您创建的查询。无需提供任何用户定义的联接

下面是为了更好地理解屏幕截图。

enter image description here

enter image description here