Informatica BDM - 查找转换中的通配符

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

我在Teradata数据库中有两个表。我需要在那里进行Informatica BDM的查找转换。查找条件如下:

table1.col1 = table2.col1
table1.col2 = table2.col2
table1.col3 = table2.col3
table1.col4 = table2.col4

问题是,在table1中,在col2,col3,col4中,可以有值'*',这类似于通配符,这意味着例如col3中的这个值可以连接到table2.col3中的任何值。换句话说,我需要创建查找transforamtion,如下面的代码>

select a.*, b.col4, b.col5
from tablea a left join
     tableb b
     on (b.col2 = a.col2 or b.col2 = '*') and
        (b.col3 = a.col3 or b.col3 = '*')
qualify 1 = row_number() over (partition by a.id order by (case when b.col2 = '*' then 2 else 1 end), (case when b.col3 = '*' then 2, else 1 end))

先感谢您!

informatica
1个回答
0
投票

我以某种方式想出来,所以我提供了可能的解决方案,以防它对任何人有帮助。

在查找转换中定义更复杂的查找条件是不可能的。即使您选择通过 - >参数指定并尝试定义查找条件。 Informatica只允许简单的条件,如input_col1 = lookup_col1和input_col2 = lookup_col2。不允许使用更复杂的条件,如b.col2 = a.col2或b.col2 ='*'。

但在这种情况下,可以使用连接器转换,可以在连接类型 - >参数中定义之前提到的更复杂的条件。

这解决了我的问题。希望它可以帮助某人。

© www.soinside.com 2019 - 2024. All rights reserved.