我有三个表(Oracle 源),我们称它们为表 1、2 和 3。
我想检查表 1 中的布尔字段,如果是 TI,只需要表 2 中的数据,如果是 F,我只需要表 3。
哪种转换最有效,我将如何实施它?
我正在试验过滤器、Java 和表达式转换,但如果表达式是逐行检查的,那么表达式在每一行上运行似乎有点过头了,而不是只检查一次并使用合适的表。
表 2 和表 3 都有一个同名字段,根据条件,我希望该字段仅用于其中一个表。
我有三个表(Oracle 源),我们称它们为表 1、2 和 3。
我想检查表 1 中的布尔字段,如果是 TI,只需要表 2 中的数据,如果是 F,我只需要表 3。
哪种转换最有效,我将如何实施它?
我正在试验过滤器、Java 和表达式转换,但如果表达式是逐行检查的,那么表达式在每一行上运行似乎有点过头了,而不是只检查一次并使用合适的表。
表 2 和表 3 都有一个同名字段,根据条件,我希望该字段仅用于其中一个表。
创建类似于下图的映射:
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