在大数据时代,任何公司的成功都取决于数据驱动的决策和业务流程。在这种情况下,数据集成对于任何业务的成功秘诀都是至关重要的,并且掌握诸如Informatica Powercenter 9.X之类的端到端敏捷数据集成平台必将使您走上职业发展的快速通道。使用Informatica PowerCenter Designer进行ETL和数据挖掘的职业是前所未有的最佳时机。
源限定符转换 | 滤镜转换 |
---|---|
1.在从源读取数据时,它过滤行。 | 1.它从映射数据中筛选行。 |
2.只能过滤来自关系源的行。 | 2.可以过滤任何类型的源系统中的行。 |
3.它限制了从源中提取的行集。 | 3.它限制了发送到目标的行集。 |
4.通过最小化映射中使用的行数来提高性能。 | 4.它被添加到源附近,以尽早过滤掉不需要的数据并最大化性能。 |
5.在这种情况下,过滤条件使用标准SQL在数据库中执行。 | 5.它使用任何语句或转换函数定义条件以获取TRUE或FALSE。 |
有几种删除重复项的方法。
或者,您也可以使用SQL Override执行相同的操作。
映射将如下所示。
如下所述配置分拣器。
5。当您将Lookup转换的属性更改为使用动态高速缓存时,新端口将添加到转换中。NewLookupRow。
动态缓存可以在读取数据时更新缓存。
如果源中有重复的记录,则还可以使用动态查找缓存,然后使用路由器仅选择不同的记录。
Source Qualifier可以联接来自同一源数据库的数据。通过将源链接到一个Source Qualifier转换,我们可以将两个或多个具有主键-外键关系的表连接起来。
如果我们需要加入中间流或源是异构的,那么我们将必须使用Joiner转换来加入数据。
下面是查找和联接转换之间的区别:
映射中的查找转换用于在平面文件,关系表,视图或同义词中查找数据。我们还可以从源限定符创建查找定义。
我们具有以下类型的查找。
下面是改善Joiner Transformation性能的方法。
基于在查找转换/会话属性级别完成的配置,我们可以具有以下类型的查找缓存。
根据配置的缓存的类型,我们可以有两种类型的缓存:静态和动态。
集成服务根据所配置的查找缓存的类型执行不同的操作。下表将Lookup转换与未缓存的查找,静态缓存和动态缓存进行了比较:
永久缓存
默认情况下,在成功完成各个会话后,将删除查找缓存,但是我们可以配置为保留缓存,以备下次使用。
共享缓存
我们可以在多个转换之间共享查找缓存。我们可以在同一映射中的转换之间共享未命名的缓存。我们可以在相同或不同映射的转换之间共享命名的缓存。
我们可以使用会话配置来更新记录。我们可以有几个选项来处理数据库操作,例如插入,更新,删除。
在会话配置过程中,可以使用会话的“属性”选项卡中的“将源行视为”设置为所有行选择一个数据库操作。
一旦确定了如何处理会话中的所有行,我们还可以为单个行设置选项,从而对每个行的行为提供额外的控制。我们需要在会话属性的“映射”选项卡上的“转换”视图中定义这些选项。
脚步:
这些选项将使会话成为“更新”和“插入”记录,而无需使用“目标表”中的“更新策略”。
当我们需要用很少的记录和更少的插入来更新一个巨大的表时,我们可以使用此解决方案来提高会话性能。
此类情况的解决方案是不使用“查找转换和更新策略”来插入和更新记录。
随着查找表大小的增加,查找转换的性能可能不会更好,并且还会降低性能。
就像IIF(IISNULL(CUST_DIM_KEY),DD_INSERT,
IIF(SRC_CUST_ID!= TGT_CUST_ID),DD_UPDATE,DD_REJECT))
在这里,我们正在检查CUST_DIM_KEY是否不为null,然后SRC_CUST_ID是否等于TGT_CUST_ID。如果它们相等,则对这些行不执行任何操作;他们被拒绝了。
联合转型
在联合转换中,尽管进入联合的行总数与从联合中通过的行总数相同,但是行的位置没有保留,即输入流1中的行号1可能不是行号在输出流中为1。Union甚至不保证输出是可重复的。因此,这是一个积极的转变。
让我们说,这是我们的来源
Cust_id | 客户名称 | 客户数量 | Cust_Place | Cust_zip |
---|---|---|---|---|
101 | 广告 | 160 | 吉隆坡 | 700098 |
102 | BG | 170 | J | 560078 |
空值 | 空值 | 180 | H | 780098 |
目标结构也相同,但是,我们有两个表,一个表将包含NULL记录,另一个表将包含非NULL记录。
我们可以如下所述设计映射。
SQ –> EXP –> RTR –> TGT_NULL / TGT_NOT_NULL EXP –表达式转换创建输出端口
O_FLAG = IIF((ISNULL(cust_id)或ISNULL(cust_name)或ISNULL(cust_amount)或ISNULL(cust_zip)或ISNULL(cust_zip)),’NULL’,’NNULL’)*\假设您需要重定向的值是null***
要么
O_FLAG = IIF((ISNULL(cust_name)AND ISNULL(cust_no)AND ISNULL(cust_amount)AND ISNULL(cust_place)AND ISNULL(cust_zip)),’NULL’,’NNULL’)*\假设您需要重定向以防万一的值是null***
RTR –路由器转换两组
组1连接到TGT_NULL(表达式O_FLAG =’NULL’) 组2连接到TGT_NOT_NULL(表达式O_FLAG =’NNULL’)
想法是在记录中添加一个序列号,然后将记录号除以2。如果该数是可分割的,则将其移至一个目标,如果不是,则将其移至另一个目标。
其背后的想法是向记录添加序列号,然后从记录中获取前1名和后1名。
这适用于任何n = 2、3、4、5、6 …对于我们的示例,n =5。我们可以对任何n应用相同的逻辑。
其背后的想法是在记录中添加序列号,然后将序列号除以n(在这种情况下为5)。如果完全可分割,即没有余数,则将它们发送到另一个目标,再将它们发送到另一个目标。
源表:
COL1 | COL2 | COL3 |
---|---|---|
a | b | c |
x | y | z |
a | b | c |
r | f | u |
a | b | c |
v | f | r |
v | f | r |
目标表1:包含所有唯一行的表
COL1 | COL2 | COL3 |
---|---|---|
a | b | c |
x | y | z |
r | f | u |
v | f | r |
目标表2:包含所有重复行的表
COL1 | COL2 | COL3 |
---|---|---|
a | b | c |
a | b | c |
v | f | r |
下图描述了组名和过滤条件。
将两个组连接到相应的目标表。
SQL查询:
您可以使用这种查询为每个部门获取1个以上的最高工资。
选择*从(
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,DEPARTMENT_ID,SALARY,RANK()超过(从DEPARTMENT_ID到ORDER BY SALARY的部分)从员工的SAL_RANK
SAL_RANK <= 2
Informatica方法:
我们可以使用Rank转换来实现。
使用Department_ID作为组密钥。
在属性选项卡中,选择顶部,3。
整个映射应如下所示。
这将使我们在各自部门中获得最高薪水的前3名员工。
我们可以为此使用Normalizer转换。如果我们不想使用Normalizer,则有一种替代方法。
我们有一个包含3列的源表:Col1,Col2和Col3。表格中只有1行,如下所示:
Col1 | Col2 | Col3 |
---|---|---|
一种 | b | C |
有一个目标表仅包含1列Col。设计一个映射,以便目标表包含3行,如下所示:
上校 |
---|
一种 |
b |
C |
我们将不得不在此处使用“联合转换”。联合转换是一个多输入组转换,它只有一个输出组。
组端口选项卡。
我们不能使用单个连接器连接两个以上的源。要联接三个源,我们需要进行两次联接转换。
假设,我们要使用Joiner联接三个表–“员工”,“部门”和“位置”。我们将需要两个连接器。Joiner-1将加入,Employees and Departments和Joiner-2将加入,Joiner-1和Locations表的输出。
步骤如下。
存在三种不同的数据模型。
在这里,销售事实表是事实表,每个维表的代理键在这里都是通过外键引用的。示例:时间键,项目键,分支键,位置键。事实表被维表(例如分支,位置,时间和项目)包围。事实表中有维键,例如time_key,item_key,branch_key和location_keys,度量值是untis_sold,已售美元和平均销售额。通常,事实表与维相比包含更多行,因为事实表包含维的所有主键采取自己的措施。
在雪花中,事实表被维表包围,维表也被规范化以形成层次结构。因此,在此示例中,诸如位置,项目之类的维表被进一步规范化为形成层次结构的较小维。
实际上星座中,有许多事实表共享相同的维表。此示例说明了一个事实星座,其中事实表的销售和运输共享维度表的时间,分支,项目。
维度表是描述企业业务实体的表,以时间,部门,位置,产品等分层,分类的信息表示。
数据仓库中的维类型
维度表由有关事实的属性组成。维度存储业务的文字描述。没有这些维度,我们就无法衡量事实。尺寸表的不同类型将在下面详细说明。
星型模式中的集中表称为事实表。事实表通常包含两种类型的列。包含度量的列称为事实和列,它们是维表的外键。事实表的主键通常是由维表的外键组成的组合键。
数据仓库中的事实类型
事实表是由业务流程的度量,度量或事实组成的表。这些可测量的事实用于了解业务价值并预测未来业务。下面将详细说明不同类型的事实。
事实表:
在现实世界中,可能有一个事实表,其中不包含任何度量或事实。这些表称为“事实事实表”。 例如:仅包含产品密钥和日期密钥的事实表是事实。该表中没有度量。但是您仍然可以获得一段时间内出售的产品数量。
包含汇总事实的事实表通常称为摘要表。
SCD Type1映射
SCD Type 1方法论用新数据覆盖了旧数据,因此不需要跟踪历史数据。
SCD Type2映射
在“类型2缓慢变化的维”中,如果将一条新记录添加到具有新信息的现有表中,则原始和新记录都将显示具有新记录的主键。
SCD Type3映射
在SCD Type3中,应该添加两列以标识单个属性。它存储一次历史数据和当前数据。
在Transformation Developer中创建的任何Informatica Transformation或从映射设计器提升为可重用转换的不可重用转换(可在多个映射中使用)都称为可重用转换。
当我们向映射添加可重用转换时,实际上是添加了转换实例。由于可重用转换的实例是该转换的指针,因此当我们在Transformation Developer中更改转换时,其实例反映了这些更改。
Mapplet是在Mapplet Designer中创建的可重用对象,其中包含一组转换,让我们在多个映射中重用转换逻辑。
Mapplet可以包含所需的任意数量的转换。就像在映射中使用mapplet时的可重用转换一样,我们使用mapplet的实例,并且对mapplet所做的任何更改都将被mapplet的所有实例继承。
目标装载顺序:
目标加载顺序(或)目标加载计划用于指定集成服务加载目标的顺序。您可以基于映射中的源限定符转换指定目标加载顺序。如果您有多个源限定符转换连接到多个目标,则可以指定集成服务将数据加载到目标中的顺序。
目标装载订单组:
目标加载顺序组是映射中链接的源限定符,转换和目标的集合。集成服务同时读取目标加载顺序组,并顺序处理目标加载顺序组。下图显示了单个映射中的两个目标装载顺序组。
目标装载顺序的使用:
当一个目标的数据依赖于另一目标的数据时,目标加载顺序将很有用。例如,由于主键和外键的关系,employee表数据依赖于部门数据。因此,应该首先加载部门表,然后再加载雇员表。如果要在插入,删除或更新具有主键和外键约束的表时保持引用完整性,则目标加载顺序很有用。
目标装载顺序设置:
您可以在映射设计器中设置目标加载顺序或计划。请按照以下步骤配置目标加载顺序:
1.登录到PowerCenter设计器,并创建一个包含多个目标装载订单组的映射。 2.单击工具栏中的“映射”,然后单击“目标负载计划”。将弹出以下对话框,列出映射中的所有源限定符转换以及从每个源限定符接收数据的目标。
我们只能从“未连接的查找”转换中返回一个端口。由于从另一个转换调用了未连接的查询,因此我们无法使用“未连接的查询”转换返回多个列。
但是,有一个窍门。我们可以使用SQL重写并连接需要返回的多列。当我们可以从另一个转换中查找时,我们需要使用子字符串再次分隔列。
作为一种情况,我们采用一种来源,其中包含Customer_id和Order_id列。
资源:
我们需要查找Customer_master表,该表包含客户信息,例如姓名,电话等。
目标应如下所示:
让我们看一下未连接的查找。
SQL Override,带有串联的端口/列:
整个映射如下所示。
我们从一个表达式转换中调用未连接的查找。
下面是表达式转换的屏幕截图。
执行上述映射后,下面是填充的目标。