我在Teradata数据库中有两个表。我需要在那里进行Informatica BDM的查找转换。查找条件如下:
table1.col1 = table2.col1
table1.col2 = table2.col2
table1.col3 = table2.col3
table1.col4 = table2.col4
问题是,在表1中,在col2,col3,col4中可以有值'*',类似于通配符,这意味着例如col3中的该值可以与table2.col3中的任何值连接。换句话说,我需要像下面的代码那样创建查找转换。
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))
提前谢谢!
答案 0 :(得分:0)
我以某种方式解决了这个问题,因此我正在提供可能的解决方案,以防对任何人有帮助。
不可能在查找转换中定义更复杂的查找条件。即使您选择通过->参数指定并尝试定义查找条件。 Informatica仅允许简单条件,例如input_col1 = lookup_col1和input_col2 = lookup_col2。不允许使用更复杂的条件,例如b.col2 = a.col2或b.col2 ='*'。
但是在这种情况下,可以使用连接器转换,其中可以定义更复杂的条件,如之前在连接类型->参数中所述。
这解决了我的问题。希望它可以对某人有所帮助。