首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Informatica:如何为两个表加入执行创造条件

Informatica:如何为两个表加入执行创造条件
EN

Stack Overflow用户
提问于 2022-03-22 10:09:59
回答 1查看 188关注 0票数 2

实际上,在这个映射中总共调用了4个表:市场、成本、A、B、

代码语言:javascript
复制
Read_sourceTB_B-----FIL1------->---------JNR4 \
    |                                     |     |
    |    Read_sourceTB_Market--\          |     |
    |    Read_sourceTB_Cost------JNR1--\  |     |
    |    Read_sourceTB_A-----------------JNR2   JNR5--->EXP... -->TGT
    |                       |             |     |
    |                       |             |     |
    |                       |             |     |
     ---------------------FIL2->---------JNR3 /
代码语言:javascript
复制
SQ_TABLEB --FIL1-> -- JNR1 \
        |               |   |
        |   SQ_TABLEA --|    JNR3-->EXP.... -->TGT  
        |               |   | 
        |--FIL2-> -- JNR2  /

**第一**合并条件

代码语言:javascript
复制
A LEFT JOIN B 
ON A.MEMBERSHIPID = B.MEMBERSHIPID
Where B.System_Code='University'

如果失败,则执行

**第二**结合条件

代码语言:javascript
复制
A LEFT JOIN B ON 
A.address = B.address and A.phonenumber = B.phonenumber

Where B.System_Code='Policy'

我应该使用哪种转换?我不知道如何使用Informatica,我的版本是InformaticaDeveloper10.5,请帮助me.Thanks!

我只知道如何

代码语言:javascript
复制
A left join B on `condition`  `System_Code='University'`

left join B on `condition`   `System_Code='Policy'`

但我不知道如何决定如果A加入BSystem_Code='University'失败了,

然后A加入B System_Code='Policy'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 12:47:37

您需要基于两个不同的条件使用B(两次)连接A,然后将它们连接回一个管道,以便进行决策/如果-否则条件。另外,请注意,所有左联接实际上都是内部联接,因为在B.xxx='something'子句中使用的是where条件。

所以,考虑到上面的问题-

  1. 在B源合格后,并行地添加两个过滤器FIL1(system_Code='University')和FIL2(System_Code='Policy')。

然后,

  1. 使用JNR1连接A和B(FIL1),使用A.MEMBERSHIPID = B_F1.MEMBERSHIPID上的合并器。使用A作为明细表,并使用“内部连接”。

  1. 然后在A.address = B_F2.address和A.phonenumber = B_F2.phonenumber上使用接合器(JNR2)连接A和B(FIL2)。使用A作为明细表,并使用“内部连接”.

然后,

  1. 使用另一个连接器(JNR3)将上述两个管道连接到一个管道中。它应该是普通连接,连接应该是表A中的主键。获取所有必需的列。

  1. (EXP)然后使用表达式转换。使用类似于下面的逻辑.

代码语言:javascript
复制
out_col1 = IIF( isnull(col_tableB_F1_jnr1),col_tableB_F2_jnr2, col_tableB_F1_jnr1)

整个地图应该是这样的-

代码语言:javascript
复制
SQ_TABLEB --FIL1-> -- JNR1 \
        |               |   |
        |   SQ_TABLEA --|    JNR3-->EXP.... -->TGT  
        |               |   | 
        |--FIL2-> -- JNR2  /

但我想你的要求可能是这样的-

代码语言:javascript
复制
A LEFT JOIN B 
ON A.MEMBERSHIPID = B.MEMBERSHIPID AND B.System_Code='University'

如果是,那么在inner join和JNR2中将JNR1更改为master outer join

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71570201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档