我目前正在研究Informatica Powercenter设计师的一个场景,其情况如下:
SQ1:我根据他们的层次结构(客户关系控制器)拥有一层员工的标准来提取员工记录,这是第一个源限定符,我正在做一个sql覆盖以从3个表中提取数据, 对于那些选定的员工,我必须提取一些其他信息,例如:
SQ2:他们正在处理哪些客户关系,这是在一个单独的源限定符中
SQ3 来自其个人资料的一些个人信息,这些信息属于第三个来源限定符。
我有单一映射,其中有三个源限定符,如上所述,并且在所有这些映射中我使用SQL覆盖。我的问题是,我在第一个限定符中提取的数据带来了员工总记录的一部分,但是在源限定符2和源限定符3中,我必须提取所有员工数据,然后在两个加入者的employee_id上进行联接收集来自源限定符1的员工层数据。我想要的是,如果我以某种方式保存员工ID和SQ1并在SQ2和SQ3中使用它们,以便我只为一部分员工提取数据,问题是我无法拆分映射而无法添加用于从SQ1中选择子集的代码bc它将是代码的重复并且需要很长时间才能运行,记录的数量也大约是一百万。我无法找到一种方法来执行上述操作,这就是我在这里寻求帮助的原因。
我从db2中提取数据,并在powercenter designer 9.5.1中工作。 如果我能就上述问题得到指导,我将感激不尽
答案 0 :(得分:0)
您可以做的是,如果所有表都在数据库中,您可以在一个源限定符中提取源表,然后覆盖SQL并创建连接。 所以重点是3个不同的源限定符,你可以有一个源限定符。
答案 1 :(得分:0)
我假设您有三个独立的源限定符,因为数据存在于不同的数据库中。如果没有,从三个不同的源限定符(你将不得不使用2个加入者)进行应用程序连接是非常昂贵的。有几种方法可以做到这一点:
拆分映射以首先暂存数据,然后使用此暂存层作为源来执行更复杂的操作
确定您的驾驶表。由于SQ2和SQ3中的记录数较大,我假设它们可以作为驱动表。使用查找SQ1(因为它的表大小较小,缓存时间不会很大)
我仍然建议您使用暂存层来提取和暂存数据,然后对其进行转换。尝试尽可能多地执行数据库连接(或查找),而不是在应用程序层加入。
答案 2 :(得分:0)
考虑使用管道查找作为SQ1的查询,并在连接SQ2和SQ3的管道中使用它。
管道查找的用法可以在以下位置找到:
https://marketplace.informatica.com/solutions/performance_tuning_pipeline_lookup
如果有帮助,请告诉我。