Iformatica 三

1              Transformation

1.1             Source Qualifier(数据源编辑,Relational)

  1. Source Qualifier有下列用途:

    1. 连接同源的数据集;
    2. 过滤源数据;
    3. 指定连接条件(等连,非等连,like)和类型(内连,外连);
    4. 指定排序栏位(当Mapping中用到Aggregator或者Joiner时,排序可以改进性能);
    5. Distinct;
    6. Override Select;
  2. Source Qualifier执行从数据库数据类型到Powercenter数据类型间的转换;
  3. 当一个Mapping中有多个Source Qualifier连到多个Target时可用Target Load Order指定装载顺序;
  4. 在Source Qualifier中的多个地方可以使用参数或变量,传入SQL语句用的是字符串格式,所以大部分时候都需要用引号;
  5. Source Qualifier只为连出的Port产生SQL语句,需要注意的是,Override SQL是和连出线的Port顺序相关的,而且,其它属性如Join,Filter,Sorted Ports,Distinct会失效;
  6. 这些属性都可以在Session 属性中被Override(覆盖)。
  7. 一切检索的内容都是以SQL Query最高优先级,如果没有sql query就找

User Join Define和filter,如果有SQL Query那么SQ拉出的端口必须与SQL Query的Select 个数一样多, sql query多表时,select到的field的table的Source是一定需带上的,当需要多个schema作为源的话,则一定需要sql querry

  1. 一切检索的内容都是以SQL Query最高优先级,如果没有sql query就找

User Join Define和filter,如果有SQL Query那么SQ拉出的端口必须与SQL Query的Select 个数一样多, sql query多表时,select到的field的table的Source是一定需带上的,当需要多个schema作为源的话,则一定需要sql querry

  1. Pre SQL和Post SQL在seesion执行前或者结束时会触发。比如可以把session 执行的时间写入到某些地方,获取执行电脑的ip地址等用处.

1.2             Update Strategy

  1. Powercenter的更新策略包括两个方面:

    1. 在Mapping中:用Update Strategy Transformation标识行为Insert,Update,Delete或者Reject;
    2. 在Session中:配置Treat source row as 属性(Insert,Update,Delete或者Data driven),配置Target的属性(Insert,Update [as Update](只是更新) | [as Insert](把更新视为新增) | [else Insert](先更新,更新不到则新增) ,Delete,Truncate target table option);
  2. 在Update Strategy Expression中可以输入常量(DD_INSERT, DD_UPDATE, DD_DELETE, DD_REJECT)或者数字值 (0,1,2,3),其它数字值被解析为0,可以用IIF或者DECODE函数构建逻辑表达式来区别每一行的更新策略;
  3. Forward Rejected Rows:勾选时被Rejected的行会存入对应Target配置的Reject文件中去,不选时,可能会写入Session Log中去,根椐当前Transformation的Tracing Level的属性来决定;如果在会话属性中配置了出错行日志属性,则不会生成Reject文件;

1.3             Expression

  1. 用来执行单行计算,在计算表达式中,可以使用输入端口,输入/输出端口,可以使用函数以及非连接的Lookup,也可以使用变量端口;
  2. 数据来源只能一个

1.4             Lookup

  1. Lookup根椐输入值从数据库或者平面文件中查找数据;
  2. Lookup分为连接型和非连接型的:
    1. 连接型的可以传送多个返回值给其它的Transformation,非连接型的只能有一个返回端口,在表达式中用Lookup函数(:LKP())来调用;
    2. 连接型的可以利用到默认值,当没有匹配记录时,非连接型的总是返回空;
  3. Lookup可以配置成使用CACHE,对平面文件这项必选,Informatica Server在条件栏位上建立索引CACHE,在其它栏位上建立数据CACHE,如果分配的CACHE空间不够就存放在CACHE文件中;
  4. CACHE文件可以是临时的,也可以是固定化的;
  5. 当Lookup配置成动态时,对应的表是Target,如果输入行连接栏位在CACHE中没有找到匹配记录,就在CACHE中插入一行,如果找到了就更新CACHE或者不更新CACHE,取决于比较栏位是否匹配,给标志栏位NewLookupRow赋值0(Unchange),1(Insert),2(Update);
  6. Lookup的端口除了I,O之外,还有L和R;
  7. 多匹配行处理策略:返回第一行,返回最一行,报错;
  8. 在数据库Lookup使用CACHE的前提下可以使用Override SQL,下面情形下适于使用Override SQL:
    1. 增加一个Where子句;
    2. 指定不同于默认SQL的Order By子句,在带有Order By子句的Override SQL后加上--,目的是屏蔽掉系统自动产生的Order By子句;

(PowerCenter 服务器是默认是按lookup的栏位来Order By的,如果你在Override里面想要覆盖它的Order By方式,一定必须在结尾输入’--‘注释符来覆盖,否则lookup会失败,而且在新的Order by 里面要有LookUp Condition包含的栏位,而且顺序需要一致)

    1. Lookup表名或者栏位中包含保留字或者栏位名中含/时,用引号将保留字引起来;

(如果look up栏位里面包含了db的保留字,那么需要在pm目录下建立一个含有那些保留字的reswords.txt的文件,pm会在保留字周围放置一些引用,来解决和服务器冲突的问题.)

    1. 需要在Lookup查询中使用参数或者变量时;
    2. 其它情况,比如从一个连接中返回结果或者要对返回作函数处理后的结果作为CACHE;
  1. 关于Lookup的条件匹配:
    1. 条件两边的端口必须匹配;
    2. 输入端口允许在条件中出现多次;
    3. 多个条件间的关系是AND;
    4. 相等条件可以匹配空值(NULL=NULL);
    5. 如果条件中有等于和不等于,将所有等于放在前面;
  2. 如果允许,可以在Lookup表的连接条件栏位上建立索引,以改进性能;
  3. LookUp一定要有输入port,SQL Overrid不能覆盖condition的作用
  4. Dynamic LookUp一般用于查找目标表是否已经有Source传过来的记录,然后根据更新标志(flag)做处理.也就是把目标表的所有数据先用文件作为缓存存放起来,然后Source传过来的记录与缓存文件的数据比较并且由属性(insert else update,update else insert)决定是否更新缓存文件.
  5. 理解Associated Port的意义;

关联端口,当Dynamic Look Up Cache时,PM如何把in port的资料和cache里面的资料来对比和关联,然后产生新的cache和NewLookUpRow

就是需要用Associated Port来关联in port端口的资料或者Sequrence了。Condition 相关的Fields端口会被自动关联.只有有连线出去的port的比较才有意义.也就是说如果没有连线出去,两个值尽管不相等,NewLookUpRow还是为0.而且Null=Null

  1. Ignore in Comparison

可以不去比较的栏位(但是至少要有一个,要不Look Up会失败),如果适当使用可以提高性能。

忽略比较,当这个值之外所有比较值都相同则不更新Cache,,NewLookUpRow=0

当其它比较值还有不相同时则更新Cache. NewLookUpRow=,1 or 2

  1. Output Old Value On Update:当更新的时候不会更新新值到Cache,全部以Cache里面的值输出,
  2. 更多LKP属性可见

1.5             Aggregator

  1. Aggregator可用于聚合统计,和SQL语句不同的是,可以针对不同的计算指定不同的条件,并可输出非Group By的栏位;
  2. 用于Group By的端口可以是输入的, 输入输出的,输出的或者变量端口,用到的输出及变量端口中不能含有统计函数;
  3. 统计端口可以包含统计函数(共有15个),可以进行两层嵌套,但要求所有的统计端口都进行嵌套;
  4. 对于那些即非Group By又非统计的端口,返回最后一次收到的那一行;
  5. Sorted Input属性表示输入的数据已经按Group By端口的要求排好了顺,这样能提高性能,输入部分数据就能有部分结果,源和目标的组件能同时工作,在没有选这个属性的情况下,需要等到所有数据输入完成才能开始有统计结果;注意:当选择Sorted Input属性,但是输入数据未排序时。Session将failed。当aggregate expression包含嵌套aggregate functions或者采用incremental aggregation或者Treat source rows as是data driven时,不能用Sorted Input属性。
  6. 在上面属性未选的情况下,需要用到索引CACHE和数据CACHE

1.6              Filter

  1. Filter用来过滤数据,被过滤掉的数据不会写入Session Log,也不会写入Reject File;
  2. 将Filter尽可能地靠近Source可以提升性能;
  3. Filter只能接受来自单个Transformation的数据流;
  4. Filter只有一种输入/输出端口,默认值无效;
  5. 只有Filter Condition评估为真(或者非零数值)的记录才能通过;
  6. 如果有可能,用Source Qualifier代替Filter可以取得更好的性能。

1.7             Joiner

  1. Joiner可以用来连接两个相关的不同来源的数据集;
  2. 至少需要指定一个匹配端口;
  3. 对两个来源有如下限制:
    1. 两个数据源要求是来自两个Pipeline或者一个Pipeline的两个分支;
    2. 任何一个Pipeline中都不能含有Update Stragegy;
    3. Sequence不能直接连到Joiner;
  4. Joiner的主要属性如下:
    1. 比较时大小写敏感;
    2. 缓存目录,数据缓存的大小,索引缓存的大小;
    3. 连接类型(Normal,Master Outer,Detail Outer,Full Outer);
    4. 输入已排序:输入数据已按连接端口的顺序排好序,这可以减少磁盘输入及输出,提高了Joiner的性能;
  5. 指定非重复值少的表作为Master表可以提升性能,默认情况下,第一个加入的数据源是Detail;
  6. 只支持相等连接,当使用多个连接端口时,连接的顺序对性能有影响;
  7. 连接端口如果含有NULL值,连接不会成功;
  8. Joiner一次只能连接两个数据源,如果有多个数据源要进行连接,使用多个Joiner;
  9. Joiner可以连接来自同一个Source的数据流(自连),有两个方法:如果Joiner选择了Sorted Input属性,可以用一个Source Instance来实现,否则就需要Source的两个Instance;
  10. Joiner的Index Cache(连接端口) 以及Data Cache(其它端口)是针对Master表建立的;
  11. 在不同的配置条件下,Joiner有不同的阻塞策略,这样可以用更少的Cache,对性能有不同的影响;
  12. 在有可能的情况下,尽可能在数据库完成连接处理;

1.1             Normalizer

  1. 在关系型数据库处理中,Normalizer用来从一行变成多行;如:f1 f2 f3一行三个字段处理后可变成f1 f2,f1 f3两行两字段,如下图

  1. Generated Key,自动产生不能删除的端口,命名为GK_XXX,由这个端口产生一个序列号值,在需要时可以作为主键,运行成功后会在知识库中保存下一个值,可以在Mapping中看到下一个值,可以修改这个值;
  2. Generated Column ID,自动产生不能删除的端口,命名为GCID_<occuring_field_name>,这个端口产生一个序号指名当前输出来自多个输入中的哪一个;
  3. Reset和Restart属性:会话结束时重置GK值到上次的值或者到1;

1.2            Router

  1. Router和Filter很相似,Router可以用一或多个Filter来取代,不同的是用Router来生成多个组时输入数据只需处理一次,所以效率更高;
  2. Router 由一个输入组,一到多个用户定义的输出组和一个默认组组成,每一个用户定义的输出组含一个测试条件,满足条件的输入数据会进入相应的用户定义组,不满足所有用户定义条件的数据会进入默认组;
  3. 输入组和输出组的端口类型和名称相同;
  4. Powercenter根椐连接的用户定义输出组的顺序来进行评估,如果默认组没有连接,则不评估那些没有连接的用户定义输出组;
  5. 如果某一行符合多个输出组的评估条件,则出现在多个组的输出数据流中;
  6. 可以将一个输出组的端口连到多个Transformation或者Target上,但不能将多个输出组的端口连到一个Transformation或者Target上;

1.3            Sequence

  1. Sequence用来产生序列号用以作为主键栏位,可以重用;
  2. 只有两个输出端口:Nextval和Currval;
  3. 通过配置Start Value,End Value,Current Value 和 Cycle属性,可以让产生的Nextval在一个指定的范围内循环;
  4. 可以将Nextval端口连到多个Target上,这时是阻塞式的产生序列号的,可以保证多个Target得到不同的序列号,如果想要得到相同的序列号,可以将Nextval端口连到Target之前的一个共有的Transformation上;
  1. 如果只连出Currval,得到的是一个常量,并且一次阻塞只能获得一个值,所以为性能考量,一般都不连出这个端口,如果Nextval同时有连出,这时Currval =  Nextval + Increment By;
  2. 在没有配置Cycle属性时,如果序列号达到了End Value,会话会失败;
  3. 不重用的Sequence有Reset属性,启用以后,在每个会话结束时会将Current Value置为会话开始时的值,这个值是它产生的第一个值;
  4. 当Sequence配置成重用时,应该给Number of Cached Values 一个大于零的缓存值,这个值是主要为保证不出现重复数据而设置的.比如当设置为100,那么一个线程在从1开始在跑,则另外一个线程会从101开始.每次跑完都要补足100整数.

1.4            Sorter

  1. Sorter用来排序数据,可以指定多个排序端口,每个端口可以指定升降序,字符串比较时可以忽略大小写,还可以用Distinct选项来消除重复(所有端口,包括没有指定排序的端口);
  2. 排序时会用到输入数据两倍大小或者更大的空间,默认的排序Cache是8M,可选的排序Cache范围是1M到4G,排序Cache不够时,服务器会将数据临时存储在排序目录,如果指定的排序Cache无法满足,会话会失败,可以用文档中提到公式计算Cache;
  3. 当配置使用 Distinct属性时,所有的端口都会用于排序;
  4. 默认情况下,NULL大于任何值,可以配置NULL值小于任何值;

1.5            Union

  1. Union可以将多个数据流合并成一个数据流,功能类似于SQL中的UNION ALL;
  2. Union可以有多个输入组,只有一个输出组,输入组和输出组有一一对应的端口;
  3. Ports 页不可编辑,只能编辑Groups 和 Group Tabs页;

1.6            Rank

  1. Rank可以用来返回根椐某个端口排序的最大或者最小的N条记录,并且可以指定分组;可以用于得到去除的重复资料(比如5条相同数据,只取了一条,那么另外四条可以由这个加上Sqerence组合得到其它四条.).
  2. Rank中可以使用分组,但并不能使用分组函数,可以指定多个分组端口,但用于排序的Rank端口不可用于分组;
  3. Rank端口有五种属性:I(输入),O(输出),V(变量),R(排序),G(分组),至少需要有一个输入端口和一个输出端口,排序端口有且只有一个,而且必须输出,排序端口和变量端口不能用于分组;
  4. 输入端口的数据只能来自一个Transformation;
  5. 有一个默认的Rankindex端口,表示输出行在排序中的位置;
  6. 如果是字符排序,可以选择大小敏感或者大小写不敏感;
  7. Top X 中的X数量表示前几条数据(Rankindex的值就是顺序),当Rankindex一样时,取其中部分,比如Top1,有两条记录的Rankindex为1,则取其中一条.其受cache限制,可按需调整cache.

1.7            Procedure

  1. 存取过程一般用于处理较为复杂的数据,分为连接型与非连接型,连接型一般用于取得返回值,非连接型一般用于在session执行前后执行一些动作,比如检查数据库空间之类的,但是可以完成所有连接型的功能,可用于Output Port作为expression.
  2. 如果是只有单个返回参数(out parameter)则使用方法类似:sp.sp_xxx(inID,proc_result),proc_result为PM保留变量.如果有多个返回参数则需要定义本地变量来接收,比如sp.sp_xxx(inID,$$var1,proc_result),参数位置与类型必须与sp里面定义的一致.
  3. 同个Procedure不得同时作为连接型与非连接型.
  4. 可以使用多层嵌套存取过程.

1.8            Transaction Control

1.功能:用于控制事务的Commit, Rollback, Continues.,比如一年的销售情况,可以按照月份分类,每个月作为一个Transaction来控制,这样就可以对单个月进行排序或者提交什么的.

2.简介:

在Properties Tab页,主要属性为Transacion Control Condition, 在里面写控制事务的表达式,表达式的返回的值只能是以下值.


TC_CONTINUE_TRANSACTION


No transaction changes will be performed for this row. This is the default TC expression.


TC_COMMIT_BEFORE


Commit and Begin a new transaction before this row written to the target.


TC_COMMIT_AFTER


Write this row to the target and COMMIT the transaction and begin a new  transaction.


TC_ROLLBACK_BEFORE


Rollback the current transaction. Begin a new transaction and write row to target.


TC_ROLLBACK_AFTER


write the row to the target and rollback the transaction. Begin a new transaction.

注意:当表达式的返回的值为TC_ROLLBACK_BEFORE或 TC_ROLLBACK_AFTER时需要设置session的Treat source rows as Data driven,要不WorkFlow会为failed.

时间: 2024-11-09 04:05:16

Iformatica 三的相关文章

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas

三百六十度全景图如何拍摄?

三百六十度全景图如何拍摄?随着全景技术的发展,全景拍摄也成为了一种十分新潮的摄影方式.全景摄影也有很多学问,而且随着全景照片的用途越来越多,拍摄全景的设备也越来越多.今天我们就介绍几种十分另类的360全景图拍摄方法,这些酷雷曼360全景图拍摄方法让你大开眼界. 工具/原料 相机 鱼眼镜头 云台 三角支架 方法/步骤 1 吊锤辅助360全景图拍摄方法 吊线保证拍摄时相机以节点旋转,使用吊线进行全景拍摄线不要太长,50CM以内比较容易控制,有时也到一米多在胸口位置进行拍摄,重锤容易晃动,很难对准.吊

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

三件软件作品评价

先交代三件软件作品的相关资料.   软件一 软件二 软件三 软件名称 蜗牛词典APP 24点小游戏APP 物理实验网站 学校 2017集美大学1412软工实践  集美大学1411 北京航天航空大学计算机学院 团队名称 SNS1412 hexagon 软剑攻城队 团队博客地址 http://www.cnblogs.com/jmu-sns/ http://www.cnblogs.com/24app/ http://www.cnblogs.com/buaase/ Git地址 https://codin

MVC4 自定义错误页面(三)

一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.Web节点下加上 <customErrors mode="On"  defaultRedirect="~/Shared/Error" /> 翻阅一些大神写的博客,在他们的博客中指出defaultRedirect是指向错误页面的URL,可是经过本人测试的时候,发现

Django(三) ORM 数据库操作

比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数

微信 小程序布局 左右三区块

/* 3三区块部分 *************/ .wear-diamonds{ display: flex; width: 100%; height: 300rpx; } .wear-diamonds>view{ width: 50%; height:100%; border: 1px solid black; } .diamonds-right>view{ width: 100%; height: 50%; border: 1px solid #000; } //-------------

Redis实战(三)Redis主从复制

从架构 1.主从架构图 2.通过命令 mkdir redisCluster创建redis集群文件夹 3.通过命令mkdir 6380   mkdir 6381   mkdir 6382在redisCluster文件夹下创建三个文件夹 4.通过以下命令将redis.conf分别拷贝到6380.6381. 6382文件夹下 cp /usr/local/redis/redis-3.0.2/redis.conf  ./6380 cp /usr/local/redis/redis-3.0.2/redis.

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定