我有三个表(Oracle源代码),我们称之为表1,2和3。
我想检查表1中的布尔字段,如果是T,我只想要表2中的数据,如果是F,我只想要表3.
哪种转换效率最高,我将如何实施呢?
我正在尝试使用Filter,Java和Expression转换,但如果表达式逐行检查,那么表达式在每一行上运行似乎有点过分而不仅仅是检查一次并使用适当的表格。
表2和表3都有一个具有相同名称的字段,我希望根据条件只为其中一个表提供该字段。
答案 0 :(得分: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 )
映射中有两个源表,并且union转换合并来自这两个管道的数据。但是,由于任何给定时间的过滤条件,数据只能从其中一个源表中检索。
* Source Filter
是源限定符的属性选项卡上的属性。您在此处设置的条件将附加到发送到数据库的WHERE
语句的SELECT
子句中。