类似 Informatica 的操作员

问题描述 投票:0回答:1

需要帮助理解逻辑。我有来自不同数据库的 2 个表。有一个共同字段,但数据不完整。

举个例子: 表 1 现场数据如下:test

 table 2 its coming as - select test from tablename

我需要比较并获取表 2 中的所有数据,其中它与表 1 中的数据匹配,即测试。我尝试使用完整外连接,然后使用常规匹配来获取记录测试,但它不起作用。有人可以帮助理解这个问题的理想解决方案吗

informatica informatica-cloud informatica-data-integration-hub
1个回答
0
投票

您可以使用 SQL 转换,也可以使用完全联接和

instr()
的方法。

A.使用 SQL 转换 -

使用 table1 作为源限定符。传递您想要匹配的列(假设列名称是 match_col)。

  1. 使用表达式将 % 添加到 match_col。
  2. 将被动 SQL 转换与静态 SQL 结合使用。 SQL 看起来像
SELECT t2.col1, t2.col2 FROM table2 t2 WHERE t2.match_col like ?match_col?
  1. 捕获 table1 中的所有列和 table2 中的新列并将它们传递到目标。 映射就像
SQ --> EXP --> SQL_Transform -> Tgt

B.使用完全连接和

instr()
- 这是一种低效的方法,但在数据量较低时它会起作用。

  1. 使用连接器连接表 1 和表 2。在虚拟列上执行完整的外部连接。
  2. 使用表达式转换。创建一个像这样的端口
match_nomatch = iff( instr(upper(table1_match_col), upper(table2_match_col))>0, 'Match','No Match')
  1. 添加带条件的过滤器 - match_nomatch ='Match'

映射就像

SQ --> |
SQ_2--> JNR -> EXP--> FIL-->Tgt
© www.soinside.com 2019 - 2024. All rights reserved.