Informatica_高级应用
Posted bradmiller
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Informatica_高级应用相关的知识,希望对你有一定的参考价值。
五、高级应用
21.任务分区
分区是通过并行处理来提供PowerCenter的执行效率。
分区类型包括:Database partitioning、Hash Auto-keys、Hash User-keys、Key Range、Pass Through、Round Robin。
PowerCenter执行原理:
默认情况下,一个session在运行时,在服务器上呈现的是一个进程,进程名为pmdtm。
无partition的mapping执行时有一个进程,最少会有3个线程(读线程、转换线程、写线程)。
读线程读取一组数据,并将这组数据给转换线程;
转换线程开始处理第一组数据,同时读线程开始读取第二组数据;
一次类推,每个线程都在不停歇地工作,并将完成的工作传给下一个线程。
各线程间是异步的。
为了提升性能有两种方法:
对mapping进行纵向分割,即将转换线程分成多个段,增加Partition Point;
对mapping进行横向分割,即增加每个段的线程数量,增加Partition。
在PowerCenter中Partition可以理解为并行,包括横向并行和纵向并行。
21.1 Database partitioning
Database partitioning是PowerCenter对数据库分区表并行读写的一种方法。目前仅支持Oracle和DB2数据库。
当表为分区表时,集成服务会读取分区信息,按照设置的PowerCenter分区数量并行地读取和写数据。
PowerCenter分区数量可以和数据库表的分区数量不一致。
例子:
源:分区表(PART_LIST1)
目标:文件(PART_LIST1_T)
做好Mapping后,在Session中实现Database partitioning的方法分为2种:静态分区和动态分区。
1.使用PowerCenter静态分区实现并行
静态分区需要手工增加PowerCenter的分区。
双击Session--》映射页签--》Partition页签(左下)--》双击SQ--》添加2个分区,并选择分区类型的Database partitioning
--》保存配置--》运行Session--》在M客户端监控到2个分区同时运行--》在Session Log也可以看到2个分区信息。
在PowerCenter Session被分区后,并且目标是文本时,默认会生成多个文本文件。
双击Session--》映射页签--》选中目标--》属性栏--》Merge Type属性用来指定是否合并文本。
Merge Type属性有4个选项:
No Merge:不进行合并(默认选项),根据PowerCenter分区数量决定生成文件的数量;
Sequential Merge:顺序合并,按顺序生成文件,再逐个合并文件,性能较差;
Concurrent Merge:并行合并,在多个文件输出过程中,同时进行合并,性能较好;
File List:生成多个文件后,再生成一个列表文件,只记录相关的文件名,不合并具体的数据。
2.使用PowerCenter动态分区实现并行
动态分区需要指定PowerCenter的分区个数。
双击Session--》映射页签--》Partition页签(左下)--》双击SQ,将分区属性设置为Database partitioning。
双击Session--》配置对象页签--》Partitioning Options栏--》属性Dynamic Partitioning和Number of Partitions。
Dynamic Partitioning属性选项:
Disabled:不启用Dynamic Partition;
Based on number of partitions:启用Dynamic Partition,并行度由Number of Partitions属性指定,可以和数据库表的分区数量不一致。
Based on number of nodes in Grids:启用Dynamic Partition,并行度与PowerCenter集群中节点(服务器)的数量一致。
Based on Source partitioning:启用Dynamic Partition,并行度与数据库表的分区数量一致。
Based on number of CPUs:启用Dynamic Partition,并行度与PowerCenter服务器CPU的数量一致。
21.2 Hash partitioning
Hash指把任意长度的输入通过Hash算法,变换成固定长度的输出,该输出为Hash值。
Hash partitioning就是使用Hash函数的输出值作为分区依据。
依据Hash函数的输入分为:Auto-Key、User-Key。
Auto-Key指由PowerCenter自动选择Key(Hash函数的输入值);
User-Key指由开发人员指定Key(Hash函数的输入值)。
Hash partitioning就是使用Hash函数,根据输入的Key计算其散列值,并据此进行分区。
1.Hash Auto-Key
用于Rank、Sorter、Joiner、Unsorted Aggregator组件需要进行分区的情况下。
Hash Auto-Key类似将数据分桶,相同的输入Key会产生相同的Hash值,对上述组件来说,
Hash Auto-Key分区的Key是PowerCenter自动选择的,分区的Key就是组件中分组的列。
对于Joiner组件使用Hash Auto-Key,
给Master表的SQ增加分区则会报错;
给Detail表的SQ增加分区会产成1:N 分区,
1:N 分区指Master作为一个数据流流入Joiner,Detail有N个数据流与Master的索引进行Join运算,Detail的性能提升N倍;
给Joiner组件增加分区(Key是关联字段)会产生N:N分区,Master表的SQ的分区数被Joiner组件改写,所有组件的分区数都相同。
2.Hash User-Key
与Hash Auto-Key一致,不同之处在于需要开发人员手工指定Key。
21.3 Key Range partitioning
Key Range partitioning是PowerCenter根据指定的某个字段的值的范围进行分区的一种方式。
在Session中增加分区时,选择Key Range partitioning分区类型,并选择分区Key列,再指定每个分区的取值范围,
左侧闭区间(>=),右侧开区间(<),空表示上、下限。
Key Range partitioning不能空间每个分区的数据分布,并且部分组件不支持Key Range分区方法,需要对数据再分配。
21.4 Pass Through partitioning(适用于源是文本文件)
Pass Through partitioning分区将接收到的数据原样向下传递。
Pass Through partitioning类似于数据库的列表分区,
在Session中增加分区时,然后给每个分区进程指定读取条件,比如按某个列的取值进行划分即可;
如果不指定读取条件,那么每个分区进程将读取全部数据。
问题是指定列的取值可能会变化,每个分区的数量不均衡。
对于源是文本文件的Mapping,则只需要给第一个分区进程指定源文件路径即可,
PowerCenter将自动计算文本文件大小,然后按照分区数量将文件均分,每个分区进程读取其中一份数据。
21.5 Round-robin partitioning(适用于转换组件平均分配数据)
Round-robin partitioning会将其收到的数据块平均向各个分区分发,理论上每个分区得到数据行数基本相同。
22.内存管理
ETL是一个高I/O的工作,合理地使用内存可以降低I/O,并提升性能。
一个Session进程使用的内存总量=DTM+Transformation cache
22.1 DTM内存
DTM Buffer由DTM Block组成,用于支持Session的读、写线程将数据从源传送到目标的过程。
DTM Buffer是在Session级别管理的,修改 DTM Buffer只对当前Session有效。
双击任意Session--》映射页签--》属性内存,修改属性DTM buffer size和Default buffer block size即可。
DTM buffer size:默认值Auto,由集成服务自动分配(12MB);可调整为32MB、64MB、128MB。
调整时机:
当Session使用Partition时;
源和目标包括大量的比较长的字符串类型时;
源和目标包括包括Clob或Blob类型时;
存在XML源或目标时。
Default buffer block size:block size是组成DTM buffer的每个内存的大小。
每个读、写线程最少需要2个block。
当1个block不足以存放一行数据时需要调整block size。
调整原则:计算所有的源、目标、转换组件中的单行数据长度,将block size设置为单行数据长度的100倍以上。
22.2 Transformation cache
部分转换组件(如:Joiner、Lookup、Rank、Sorter、Aggregator等)有独立的Cache,
这是Session内存的组成部分,对Transformation cache的调整可以优化转换线程的性能。
以Joiner组件为例,cache使用过程如下:
当Master表的数据被读入PowerCenter之后,Joiner组件会利用Cache来建立索引;
当Cache用完时,PowerCenter会将数据Dump到磁盘上(又将内存中的全部数据写到磁盘上了);
只有当Master表的索引建立结束后,才开始读取Detail表的数据,并将Detail表的数据与Master表的Cache关联。
Cache包括:Data Cache Size、Index Cache Size、Sorter Cache Size等。
Data Cache Size=(主表行数)*(行大小+8); 行大小=连接字段+输出字段的长度和。
Index Cache Size=(主表行数)*(行大小+16) ; 行大小=连接字段
点击“Auto”后的小箭头--》选中"计算",输入行数,移动模式选“Unicode”
--》点计算按钮--》生成Data Cache Size、Index Cache Size。
?设置了Cache后性能没有得到明显提升?
一般在Session Log中有一条提示信息是对Cache的大小建议。
一个Session可能使用了多个带有Cache的组件,这时并不需要对所有组件都进行Cache调整。
PowerCenter提供了两个参数来管理Auto时的默认值,这两个参数以小的为准。
Maximum Memory Allowed For Auto Memory Attributes=512MB
PowerCenter 将自动为您在内存相关字段中为其指定“自动”的所有转换计算最佳内存分配,例如缓存大小和缓冲区大小。
要限制为此会话中的“自动”转换分配的总内存,请在此属性中以 MB、GB 为单位指定最大内存。
Maximum Percentage of Total Memory Allowed For Auto Memory Attributes=5
PowerCenter 将自动为您在内存相关字段中为其指定“自动”的所有转换计算最佳内存分配,例如缓存大小和缓冲区大小。
要限制为此会话中的“自动”转换分配的总内存,请在此属性中指定可用物理总内存的一个百分比。
这两个参数不能针对单个Session修改,只能针对整个项目(所有Session)进行修改,
修改方法:任务--》会话配置--》default_session_config 编辑--》属性页签
Maximum Memory Allowed For Auto Memory Attributes=1024MB
Maximum Percentage of Total Memory Allowed For Auto Memory Attributes=10。
修改后对所有Session有效。
项目实践:使用这两个参数满足绝大多数Session的内存Cache;
对超大Cache的组件进行手工调整。
23.网格计算
网格计算是PowerCenter的集群功能,作用在于提升PowerCenter的扩展能力和处理能力。
23.1 Grid架构
Domain:一组管理进程或者线程,用于管理和协调Domain中的所有服务。
Domain在安装第一个节点(N1)的过程中创建。
Grid(网格):由若干个节点(N1,N2...)组成。映射到安装配置过程分为两步:
1.创建Domain时添加,即安装N1时选择“Create Domain”,安装N2..时需要选择“Add into Existing Domain”;
2.在Admin Console上创建Grid,并把节点N1,N2...作为它的成员。
一个Domain可以包含多个Grid,一个Grid可以包含多个节点。
IS(Integration Service)集成服务:IS可以创建在Grid上或单节点上(在创建IS时选择), 只有创建在Grid上的IS才支持集群。
创建在Grid上的IS逻辑上是一个名字,但在Grid的所有节点上各运行一个进程。
一个Grid上可以创建多个IS(特殊情况下需要,比如特殊字符集或者不同的环境变量)。
Repository Service存储库服务:主要负责与Repository交互的协调工作,压力较少没有Grid方式。
当IS采用Grid时,建议Repository Service采用HA(高可用)方式,即一主(Primary)一备(Backup)。
23.2 Grid负载均衡
PowerCenter负载均衡有两种模式:Workflow on Grid、Session on Grid。
Workflow on Grid是将Grid中的所有节点当作资源池,以Task为单位进行任务分发,确保充分利用Grid的资源,是默认方式。
Session on Grid是将Grid中的所有节点当作资源池,以Session的Partition为单位进行任务分发,参见Grid与任务分区。
Domain提供了3种基本的任务分发方式,分别是:Round-robin、Metric-Based、Adaptive。
任务分发方式是Domain的属性,一旦设定所有的IS均采用这一设置。
1.Round-robin模式
Load Balance分发器以Round-robin模式进行任务分发。
Load Balance管理检查Maximum Process(进程数上限=10,Maximum Process是node的属性,在Admin Console中进行管理)阈值设置,
如果增加当前任务不会超过它的阈值设置,这个任务将被分配给这个节点执行;
如果增加当前任务会超过它的阈值设置,Load Balance管理器将继续寻找可用的服务器来执行此任务。
在Round-robin模式下,Load Balance分发器不会Bypass任何任务。
Round-robin模式一般用在节点资源比较平均的情况下。
2.Metric-Based模式
Load Balance分发器以Round-robin模式进行任务分发。
Load Balance管理检查所有资源的阈值设置,同时检查Swap空间。
如果当前任务的资源需求不超过节点的剩余资源,这个任务将被分配给这个节点执行;
如果当前任务的资源需求超过节点的剩余资源,Load Balance管理器将继续检查其他节点的剩余资源来执行此任务。
在Metric-Based模式下,PowerCenter会自动统计Task最近3次运行所需的资源,从而决定任务的资源需求;
对于首次执行的任务,PowerCenter会使用默认值40MB内存,15%CPU作为任务的资源需求。
在Metric-Based模式下,Load Balance分发器不会Bypass任何任务。
一个资源密集型任务被提交,其它同优先级的任务可能需要等待该任务被分配。
3.Adaptive模式
在Adaptive模式下,PowerCenter将评估所有Node的资源可用性(CPU空闲、所有阈值、Swap空间),
以CPU空闲为优先级检查所有Node的阈值、Swap空间,如果满足任务资源需求则分发;否则继续查找。
在Adaptive模式下,PowerCenter会使用CPU Profile 和Task最近3次资源统计值来作为判断依据;
对于首次执行的任务,PowerCenter会使用默认值40MB内存,15%CPU作为任务的资源需求。
在Adaptive模式下,Load Balance管理器根据任务资源需求和任务优先级决定任务的分配。
如果当前任务的资源需求不超过节点的剩余资源,这个任务将被分配给这个节点执行;
如果当前任务的资源需求超过节点的剩余资源,Load Balance管理器将继续检查其他节点的剩余资源来执行此任务。
“Admin Console--》Node--》资源配置阈值”:
进程数上限=10
CPU运行队列长度上限=10
内存百分比上限=150
任务优先级Service Level:
在Domain中定义,在Workflow中使用。
即一个Workflow中的所有Task具有相同的优先级,不同Workflow中的Task可能具有不同的优先级。
Load Balance管理器将优先分发高优先级的任务,
为了避免低优先级任务始终不能被分发,设置了等待时长,
如果等待时间超过了等待时长阈值,那么低优先级任务将被升级为高一个等级的优先级。
CPU基线(CPU Profile):是根据PowerCenter提供的基线来评估CPU能力的一个值。
计算方法:选择Node,选择Action--》计算CPU基线
CPU Profile仅用于Adaptive模式下,对其他模式无效。
23.3 Grid与任务分区(Partition) Session on Grid
将一个Session分发到多个节点上执行,从而提高Session的执行效率。
Session在运行时一般表现为服务器上一个名为pmdtm的进程,如何将一个进程分发到多台服务器呢?
在PowerCenter中配置Session on Grid有两种不同的组合:Session on Grid+Partition,Session on Grid+资源选项。
Session on Grid是session的一个属性,(未找到)。
24.高可用性(HA)
HA(High Available)即高可用性集群,是保证业务连续性的有效解决方案。
由两个或多个节点组成,分为活动节点和备用节点,活动节点只能有一个。
24.1 PowerCenter自带的HA方案
存储库服务和集成服务被设置为HA。
第一个节点安装时选择"创建Domain",第二个节点安装时“增加到已存在的Domain”。
安装结束后,在Admin Console中创建一个存储库服务,创建时需要选择Primary进程运行的节点,并选择Backup进程运行的节点。
再创建一个集成服务,Primary进程节点选择为存储库服务的Backup进程节点,Backup进程节点选择为存储库服务的Primary进程节点。
安装完成后,存储库服务和集成服务各有一个唯一的逻辑名称,两个节点上各有两套进程。
主节点进程响应外部请求,备节点进程空跑;当主节点进程失效后,备节点进程自动接替为新的主节点进程。
PowerCenter的session支持程序异常退出时从断点进行恢复的功能,
参数见“编辑任务--》属性页签--》Recovery Strategy",取值分为3个:
Fail task and Continue workflow:将当前任务标记为失败,但继续运行后续任务。
Resume from last checkpoint:从断点进行恢复,可用于HA环境。
Restart task:重新启动该任务。对于重新运行不影响结果的任务,也可用于HA环境。
HA适用于实时任务,并不适用于批量任务(性能损失)。
24.2 依托HP Services Guard和IBM HACMP等第三方厂商的HA方案
只安装一次PowerCenter。
将PowerCenter安装在共享的存储上,即随着OS HA切换自动切换的存储上;
将PowerCenter相关服务绑定在浮动IP或者浮动IP对应的主机名上,
并将PowerCenter服务整合到第三方HA软件的Package中,保证主机节点发生切换时,PowerCenter可以在另外的节点上自动启动。
同样需要Recovery Strategy属性支持。
24.3 两种HA方案对比
比较项目 PowerCenter自带HA 第三方HA
切换时间 秒级别。由于Backup服务已经启动, 分钟级别。需要unmount文件系统,重新mount到备份系统,
仅处于Backup状态,所以切换时间快 并启动PowerCenter服务,所以需要10分钟左右。
安装配置 需要在主、备节点上各安装一次PowerCenter 仅在浮动IP上安装一次PowerCenter
是否需要共享存储 需要。并且要求两个节点同时可读可写 需要。在某一时刻,某一节点可读可写
是否需要Recovery Stragety支持 需要 需要
25.web service应用
web service hub:PowerCenter提供的Web Service的集中访问点。在web service hub上,
可以看到PowerCenter内置的Web Service服务和通过PowerCenter开发Web Service。
web service调度/监控接口:PowerCenter内置的Web Service服务,通过这些服务可以查看PowerCenter元数据、
对Workflow/Session等进行调度、监控及与第三方平台进行集成。
web service Provider:是将PowerCenter中的一个逻辑(转换组件、Mapplet、Mapping等)发布成Web Service。
即用PowerCenter对外提供Web Service服务。
web service Consumer:即PowerExchange for Webservice。PowerExchange是PowerCenter所有对外接口的名字,
PowerExchange for Webservice是PowerCenter访问 Web Service的接口的名字。
25.1 web service hub
web service hub是Domain管理的一个应用服务,作为外部客户端访问Web Service的网关。
web service hub处理来自外部客户端访问PowerCenter功能的SOAP请求。
创建web service hub,在控制台上”选中Domain--》点操作--》新建--》web service hub“,
输入名称”BI_WSH“,许可证,节点,存储库,用户名、密码后点”下一步“,
再输入URL方案”http“,hub主机名”sc-201709251400“,点”完成“。
启用web service hub服务,
打开服务网址:http://sc-201709251400:7333/wsh
Realtime WebService:将PowerCenter中的workflow发布为WebService服务。
Batch WebService:主要用于运行、监控Session和Workflow,还包括访问Repository Metadata的WebService API。
25.2 web service调度/监控接口
Batch WebService提供了大量的调度、监控PowerCenter的API,可用于第三方工具的二次开发,也可用于项目中调度、管理的需要。
面向Data Integration的Web Service Operation包括如下几类:
1.连接存储库服务的接口
Login
Logout
2.连接集成服务并获得其相关信息的接口
pingDIServer
getDIServerProperties
initializeDIServerConnection (deprecated)
deinitializeDIServerConnection (deprecated)
3.调度、启动workflows的接口
startWorkflow
startWorkflowEx
startWorkflowFromTask
stopWorkflow
scheduleWorkflow
unscheduleWorkflow
waitTillWorkflowComplete
4.启动、停止Tasks的接口
recoverWorkflow
resumeWorkflow (deprecated)
startTask
stopTask
waitTillTaskComplete
5.获得Session监控、统计的接口
getNextLogSegment (deprecated)
getSessionLog
getSessionPerformanceData
getSessionStatistics
getTaskDetails
getTaskDetailsEx
getWorkflowDetails
getWorkflowDetailsEx
getWorkflowLog
monitorDIServer
startSessionLogFetch (deprecated)
startWorkflowLogFetch (deprecated)
25.3 web service Provider
web service Provider:是将PowerCenter的相关对象发布成Web Service的过程。
用途:分享数据和结果。
在PowerCenter中可以将转换组件、Mapplet、Mapping发布成Web Service。
例子1:用可重用转换组件计算x+100,并发布为Web Service。
1.创建一个Reusable Transformation完成x+100的逻辑
在“D”客户端选择Transformation Developer,将表达式组件(f(x))拖入进来并命名为exp_add100,
创建输入变量IN_VAR,和输出变量OUT_VAR=N_VAR+100。
2.创建一个支持Web Service的Mapping
在“D”客户端选择"映射--》创建Web服务映射",有3个选项分别为:从WSDL导入、使用源/目标定义、使用转换/Mapplet定义;
选择“使用转换/Mapplet定义”,选择第一步创建的exp_add100组件(即将exp_add100组件发布成Web Service)。
自动创建的Mapping中带有源和目标,这是PowerCenter对Web Service的封装。
3.创建Workflow,并将其发布为一个Web Service
在“W”客户端创建Workflow,“工作流--》向导--》输入名称w_add100---》选择映射M_exp_add100--》下一步至完成”。
如果Mapping中使用了数据库对象,则需要指定数据库连接;
如果Mapping中使用了文本,则需要指定目录和文件名。
配置工作流, “工作流--》编辑“,在”Web服务“后勾选”启用“,并点击”配置服务“,
服务名称Service Name:发布的Web Service名称,可以是任意字符串。
超时Timeout(秒Seconds):从web service hub获取到请求开始到产生响应的最大等待时间,如果超过该时间仍无法响应,将发送失败信息给客户端。
服务时间阈值Service Time Threshold(毫秒Milliseconds):单个请求的处理时间,如果超过则启用另一个实例来处理后续请求。
web service hubs:指定运行此workflow的web service hub,默认使用所有的web service hub。
每个Hub的最大运行计数Maximum Run Count per Hub:每个web service hub可以启动的web services实例数。
受保护:启动或运行Web Service需要提供授权信息(即输入用户名和密码)。只有拥有Workflow权限的用户才可以请求Web Service。
可见:决定Web Service是否在web service hub上是否可见。建议勾选。
可运行:允许Web Service请求启动Web Service Workflow。建议勾选。
登陆web service hub,http://sc-201709251400:7333/wsh
在有效WebService中看到上面发布的BI_Add100,并可以对其进行测试和调用。
Try-It:是PowerCenter提供的Web Service测试工具,可以测试Web Service逻辑功能。
WSDL:提供了调用Web Service的WSDL定义和调用此Web Service的URL。
例子2:将DEPT表发布为Web Service,输入部门编号,输出部门的相关信息。
1.创建支持Web Service的Mapping模板
在“D”客户端选择"映射--》创建Web服务映射--》使用源/目标定义",
输出Web服务名称”Query_DEPT“,选择源端口"DEPTNO",选择目标端口”DEPTNO、DNAME、LOC“,点确定自动生成Mapping。
2.增加Lookup组件后保存Mapping。
使用Lookup组件查找DEPT表为目标表赋值。
3.创建Workflow,并将其发布为Web Service。
例子3:对已有的WSDL(Web Service Definition Language)定义一个Web Service。
1.导入源和目标
”源--》web service Provider--》从WSDL导入“。
2.完成源和目标的映射。
3.创建Workflow,并将其发布为Web Service。
25.4 web service Consumer
web service Consumer是PowerCenter提供的一个转换组件,用于访问外部提供的Web Service。
例子:调用Web Service(WS_Add100)
1.开发mapping ,调用Web Service(WS_Add100)
打开web service Hub,获取WSDL调用的URL(向Web Service提供方索要):
http://sc-201709251400:7333/wsh/services/RealTime/WS_Add100
http://sc-201709251400:7333/wsh/services/RealTime/WS_2
拖入源表和目标表(目标表和源表都是EMP表),
拖入web service Consumer转换组件(提示:没有许可证),
在地址栏输入WSDL的URL,点击”打开“,选择Operations,点”下一步“直到完成。
将SQ中的sal与web service Consumer的输入端口n_IN_VAR连接,
将web service Consumer的输出端口n_OUT_VAR与目标表的sal连接即可。
2.如何应对Pass Through字段
除SAL字段外,其它字段不能关联?
双击web service Consumer组件,打开web service Consumer Properties页签,
点击”Add Pass-Through Port“按钮,将目标表的其他字段添加进来;
这时看到web service Consumer组件输入端口新增了其他字段,输出端口仍没有添加;
选中web service Consumer组件的标题部分,单击右键,在右键菜单中选择”WSDL WorkSpace--》Output Mode“,
进入XML Editor,再选择标题栏,单击右键,在右键菜单中选择”Add a Reference Port",在弹出框中选中其余字段按”OK“;
保存、退出。输出端口已添加其余字段,字段命名前缀Ref_。
进入Mapping编辑界面,关联相关输入输出字段,完成Mapping。
26.pushdown optimization
将部分ETL的负载转移到数据仓库服务器上。
26.1 pushdown优化是什么
PowerCenter的执行原理:
1.PowerCenter从存储库中读取元数据;
2.PowerCenter的DTM引擎解析读取的元数据(DTM引擎在PowerCenter服务器上执行)。
pushdown功能试图将Mapping转换为一组SQL,并将SQL推送到数据库服务器上执行。
理论上,所有的Mapping均可以转换为SQL;
实际上,PowerCenter并没有将所有的Mapping或Mapping中的所有组件都转换为SQL;
而是根据不同的类型,部分转化为SQL,以期望获得最大的系统性能。
26.2 pushdown优化类型
在Session--》映射 中未发现pushdown左侧树(起始页和连接中间未发现pushdown)。
pushdown选项:
To Source:集成服务从源向目标分析Mapping,直到遇到下一个组件无法下推到源时,则将前面的所有组件生成的SQL下推到源系统。
To Target:集成服务从目标向源分析Mapping,直到遇到一个上游的组件无法下推到目标时,则将后面的所有组件生成的SQL下推到目标系统。
Full:集成服务从源和目标两侧分析Mapping,尽力将Mapping下推到数据库中。
如果一条SQL能解决,则需要一个pushdown Group:Insert into 目标表 (列) select 列 from 源表;
如果一条SQL不能解决,则需要两个pushdown Group:select 列 from 源表; insert into 目标表 (列);
$$PushdownConfig:根据数据库负载,动态的选择To Source、To Target、Full。
Pushdown Optimization左侧树只是预览窗口,需要在session-->属性页签进行配置:
Pushdown Optimization=To Source/To Target/Full/$$PushdownConfig 未发现该属性
Allow Temporary View for Pushdown:允许PowerCenter在数据库中创建临时的视图;利用关系源数据库中的计算资源时创建临时数据库视图。
Allow Temporary Sequence for Pushdown:允许PowerCenter在数据库中创建临时的序列;利用关系源数据库中的计算资源时创建临时数据库序列。
Allow Pushdown for User Incompatible Connections:使用不同的用户名跨各个连接利用计算资源。
27.版本控制及部署
Team Based Development功能包括版本管理、团队开发及部署相关支持。
在使用Team Based Development功能时需要打开控制台存储库--》属性页中的Version Control选项。
将Version Control设置为true,即启动了版本控制。
27.1 check in签入/check out 签出
对新开发并测试完成的对象(mapping,session,workflow)需要进行签入操作,、
“版本控制--》签入”,被签入的对象不可以被修改。
如果需要修改时,则需要先将对象签出(“版本控制--》签出”)。
同一时间同一对象只能由一个开发人员进行签出并修改。
27.2 Team-Based开发的一些有用功能
在“版本控制“下除”签入、签出”,还有“查看历史纪录、与先前版本对比”等功能;
点击"查看历史纪录(View History)",在看历史纪录页面,
“工具--》比较--》以前版本” :可以进行对象比较,
在“实例页签”可以看到Mapping中的对象,双击某个对象可以对比两个版本之间该对象的差异。
这是PowerCenter元数据驱动架构的优势,它可以跟踪到一个表达式或一个字段的更改。
“工具--》查看相关性(View Dependency)” ,查看与当前对象有关联的所有源、目标、转换、映射、会话、工作流、mapplet、工作集、用户定义的函数。
如果当前对象更改或删除,与之有关联的对象将可能失效。
27.3 Label与Deployment Group
PowerCenter提供了4种部署方案:
使用部署组(Deployment Group)支持部署;
使用pmrep命令进行部署;
使用图形化拖拽的方式进行部署;
与第三方软件配置管理、部署工具进行集成。
1.使用标签,并进行部署
定义标签:R客户端--》版本控制--》标签--》新建,输入标签名,点确定。
定义好标签后,就可以给测试好的mapping或其他对象使用标签了。
使用标签:R客户端--》版本控制--》应用标签--》打开了标签向导,下一步--》
选择对象,选中某个对象后点添加,下一步--》
选择标签,勾选“为所有子项添加标签”后,点“完成”。
根据标签过滤:以标签为过滤条件使用部署组进行部署。
部署组是将要进行部署的对象整合到一个管理对象中的一种机制。
部署组类型分为:静态的部署组、动态的部署组。
静态的部署组中物理地包含具体的PowerCenter的对象。
动态的部署组包含的是一个查询对应的对象集合,满足查询条件的所有对象都属于这个部署组。
创建部署组:R客户端--》工具--》部署--》组--》新建
或者选中左侧树中的部署组点右键--》新建组,
选择组类型(静态、动态),如果选择的是静态部署组,只需要填写组名(如:Static_deploy_Group)即可;
如果选择的是动态部署组,除填写组名(如:Dynamic_deploy_Group)外,还需要指定一组查询条件。
点查询,弹出查询浏览器,点新建,弹出查询编辑器,参数名称选“Lable”,运算符选“Contains”,值1输入标签名“正式”,
查询名称修改为“Lable正式”,点保存并关闭此页面;继续选择“Lable正式”点关闭;
查询名称值被带入,修改组名“Dynamic_deploy_Group_正式”,并点确定。
左侧树中部署组内可以看到新添加的组,名称带(数字)的是静态组,名称带(Dynamic)是动态组。
静态组可以双击打开,动态组可以选中--》右键--》查看内容 打开。
静态组的内容可以从对象处直接拖入,动态组的内容可以给对象添加标签,再通过标签查询获得。
27.4 复制对象从开发Repository到生产Repository
PowerCenter的每个客户端都有导入、导出功能,可以在不同的存储库之间复制对象。
建议在R客户端从开发Repository直接拖拽部署组到生产Repository。
从开发Repository向生产Repository部署的两种方式:
使用pmrep命令部署(后续介绍);
使用图形化拖拽方式部署。
可以拖拽部署的对象包括:
开发对象:Source、Target、Mapping、Session、Workflow等;
文件夹Folder;
部署组Deployment Group。
拖拽部署注意事项:
拖拽一个对象到生产Repository时,应该将对象放入对应的文件夹中;
拖拽一个文件夹或部署组时,应该将文件夹或部署组放到Repository上,而不是具体的文件夹或部署组上。
以上是关于Informatica_高级应用的主要内容,如果未能解决你的问题,请参考以下文章