1

我有三个表(Oracle 源),我们称它们为表 1、2 和 3。

我想检查表 1 中的布尔字段,如果是 TI,只需要表 2 中的数据,如果是 F,我只需要表 3。

哪种转换最有效,我将如何实施它?

我正在试验过滤器、Java 和表达式转换,但如果表达式是逐行检查的,那么表达式在每一行上运行似乎有点过头了,而不是只检查一次并使用合适的表。

表 2 和表 3 都有一个同名字段,根据条件,我希望该字段仅用于其中一个表。

4

1 回答 1

0

创建类似于下图的映射:

src_TABLE2 --> sq_TABLE2 --|
                           |--> union --> (further processing)
src_TABLE3 --> sq_TABLE3 --|

并在源限定符中使用以下Source Filter条件* :

-- for sq_TABLE2
'T' = ( SELECT FLAG FROM TABLE1 )

-- for sq_TABLE3
'F' = ( SELECT FLAG FROM TABLE1 )

映射中有两个源表,联合转换会合并来自这两个管道的数据。但是,由于任何给定时间的过滤条件,数据将仅从源表之一中检索。

*Source Filter是源限定符的“属性”选项卡上的一个属性。您在此处设置的条件将附加到发送到数据库WHERE的语句的子句中。SELECT

于 2013-01-09T16:31:07.403 回答