优 - informatica 学习日记整理

更新时间:2024-06-18 03:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

informatica 学习日记整理

1. INFORMATICA CLIENT的使用 1.1 Repository Manager 的使用 1.1.1 创建Repository。 前提:

a. 在ODBC数据源管理器中新建一个数据源连接至你要创建Repository的数据库(例:jzjxdev)

b. 要在你要连接的数据库中新建一个用户(例:name: ETL password: ETL) 现在你可以创建一个Repository了。选择Repository – Create Repository,输入Repository Name(例:JZJX),Database Username(例:etl),Database Password(例:etl),ODBC Data Source(例:jzjxdev),Native Connect String(数据库所在ip例:141.20.52.108)

1.1.2 添加Repository。

通过这一步你可以添加别人已经建好的Repository。

选择Repository – Add Repository,输入Repository Name(例:JZJX),Username(例:etl),点击ok就可以看到名为JZJX的Repository在左边的浏览器中,但是此时还看不到它的内容,要看到它的内容或者对它进行操作必须先连接它。

1.1.3 添加Folder

选择Folder – Create,输入文件夹名称即可。

1.2 Designer 的使用

首先连接Repository,可以看到该Repository在Repository Manager中创建的文件夹。

1.2.1 Sources

Sources文件夹下的表是抽取的来源表。 导入方法:

选择Tools菜单下的Source Analyzer,然后选择Sources菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取的表点击ok你所选择的表就会出现在Sources文件夹下。

说明:上面的导入过程导入的只是表结构,你也可以自己创建来源表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。

1.2.2 Targets

Targets文件夹下的表是抽取的目标表,也就是抽取结果的存放表. 导入方法: 选择Tools菜单下的Warehouse Designer,然后选择Targets菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取

的表点击ok你所选择的表就会出现在Targets文件夹下。

说明:上面的导入过程导入的只是表结构,你也可以自己创建目标表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。

1.2.3 Mappings 的设计

选择Tools菜单下的Mapping Designer才能进行Mapping的设计。 每个Mapping都由来源表,transformation和目标表组成,描述数据抽取的过程。来源表和目标表可以从Sources和Targets文件夹拖拽到工作区,但是transformation一般来说是需要自己创建的。Mapping的设计关键是

transformation的使用,它的使用关系到数据抽取的正确性和效率。下面说明各个transformation的作用和用法。

(Active:表示该transformation可以改变通过它的数据的行数; Passive:表示该transformation不改变通过它的数据的行数; Connected:表示该transformation要连接到数据流;

Unconnected:表示该transformation可以不连接到数据流)

1.2.3.1 Source Qualifier

作用:根据查询SQL文从关系表或平坦文件查出所要记录 用法:创建好Source Qualifier(下简称SQ) 后,将需要的用的字段从来源表拖拽到SQ ,双击SQ,对SQ的属性进行设臵。

Select Distinct 属性:选中的话表明结果记录将去除重复值; Tracing Level属性: 共有四级,表示log的复杂程度; Number Of Sorted Ports属性: 排序的字段个数,值大于0时Sql Query中的sql 文将出现order by 从句;

Sql Filter属性: 属性值将出现在Sql Query属性值的where表达式中; User Defined Join属性: 用户如果要定义外部连接可在此写(例: {REG_CUSTOMER LEFT OUTER JOIN PURCHASES on

(REG_CUSTOMER.CUST_ID = PURCHASES.CUST_ID AND PURCHASES.AMOUNT > 100.00) }) Sql Query属性:值是一条sql 文,session运行时会执行这条sql 文进行查询。 命名方式:SQ_Name

类型:Active/Connected

注意:SQ的输入只能来自来源表; User Defined Join属性值必须用{}括起来;在更改了SQ的属性值之后一定要点击Sql Query属性的 generate sql按钮重新生成sql文。

1.2.3.2 Update Strategy

作用:决定该行进行插入,删除,更新,忽略中的哪一种操作

用法:创建好Update Strategy(下简称US)后,将需要的用的字段从transformation拖拽到US ,双击US,对US的属性进行设臵。

US的设臵关键是Update Strategy Expression属性的设臵,这个表达式使用IIF 或DECODE 函数对记录的每一行进行判断,为每一行赋予

DD_INSERT,DD_UPDATE,DD_DELETE,DD_REJECT(这四个是常量,值分别为0,1,2,3)中任意一个值,表明该行在数据库中将进行何种操作。 命名方式:UPD_Name 类型:Active/Connected

注意:mapping中有US时,mapping对应的session在配臵属性时, 必须把Treat rows属性设臵为Data Driven,否则US将不起作用。

1.2.3.3 Expression 作用:计算一个值 用法:创建好expression_r(下简称EXP)后,将需要的用的字段从来源表拖拽到EXP,双击EXP,

新增输出端口,编辑该端口的表达式。 命名方式:EXP_Name

类型:Passive/Connected

注意:要进行列运算一般用这个transformation; 此种transformation可以使用本地变量

1.2.3.4 Stored Procedure 作用:调用一个存储过程

用法:创建Stored Procedure(下简称SP)的时候连接数据库选择必要的存储过程。SP有连接和不连接到数据流两种用法。

连接到数据流方式跟一般的transformation类似,通过拖拽端口来实现数据流。 不连接到数据流分表达式调用和Pre-/Post Session两种方式。表达式调用方式中SP被Mapping中另一个transformation 中的表达式

调用。Pre-/Post Session方式就是在Session的属性中配臵SP的运行时间,Source Pre-load(Session从源表查询数据之前),Source

Post-load(Session从源表查询数据之后),Target Pre-load(Session将数据插入目标表之前),Target Post-load(Session将 数据插入目标表之后) 命名方式:SP_Name

类型:Passive/Connected or Unconnected 注意:

1.2.3.5 Sequence Generator 作用:产生主键

用法:创建好Sequence Generator(下简称SEQ)后,双击SEQ,对SEQ的属性进

行设臵。Start Value属性是开始值,此属性只在选择了 Cycle选项才有效;Increment By 属性值是每次增加的值;End Value属性值是结束值;Current Value属性值是当前开始值;Cycle选

项被选择的话NEXTVAL的值达到End Value值之后会重新从Start Value开始;Reset选项被选择的话,服务器会为每个使用了该SEQ的 session的NEXTVAL值都从Current Value开始。 命名方式:SEQ_Name

类型:Passive/Connected

注意:这是一个只有两个输出端口没有输入端口的transformation.; 如果该SEQ时可重复使用的话,不能选择Reset选项。

1.2.3.6 Aggregator 作用:执行分组聚合运算

用法:创建好Aggregator(下简称AGG)后,将需要的用的字段从其他transformation拖拽到AGG ,双击AGG,在端口tab中每个端口有

group by 选项。钩上想要分组的列,新增端口,编写聚合表达式实现分组聚合运算。

命名方式:AGG_Name 类型:Active/Connected 注意:可使用本地变量

1.2.3.7 Filter 作用:过滤记录

用法:创建好Filter(下简称FIL)后,将需要的用的字段从transformation拖拽到FIL ,双击FIL,对FIL的属性进行设臵。FIL的配臵主 要是对Filter Condition的配臵,Filter Condition 写入类似where条件的表达式即可。

命名方式:FIL_Name 类型:Active/Connected 注意:

1.2.3.8 Lookup 作用:查询值

用法:创建Lookup(下简称KP)的时候选择要查询的表。和Stored Procedure一样SP有连接和不连接到数据流两种用法。

连接到数据流方式将要关联查询的字段从其他的transformation拖拽过来,然后双击LKP进行属性的配臵。

Lookup Policy OnMultiple Match属性表明当查询到多个行时采取取第一行,取第二行,报错中哪个策略.

Lookup Condition 属性值是查询的条件。

Lookup Sql Override属性值是查询执行的Sql文,我们可以在里面直接写Sql。Lookup Caching Enabled属性表明是否使用缓存,此项一般选择为好,有利提高效率。

Loopup Cache Persistent属性表明是否使用永久的缓存。 命名方式:LKP_Name

类型:Passive/Connected or Unconnected

注意:如果Lookup表的类型是来源表的话,请尽量使用Joiner; 一个已连接的LKP不能再被其他transformation的表达式调用;

如果查询表在session运行过程中不会改变,使用Loopup Cache Persistent属性可提高性能;

尽量不要在Lookup Sql Override中书写order by子句,因为cached LKP默认有order by ;

Lookup在ETL中是一种常见的操作,比如产品键到代理键的转换,ID到name的转换等,都可以通过lookup来实现。Informatica中的lookup transformation组件除了能实现这种普通的转换,还可以用来更新缓慢变化维等,功能可谓强大。本文根据Informatcia8.1的联机文档,简单介绍一下informatica的lookup transformation。 中英文名词对应: ?transformation:转换 ?connected:连接的 ?unconnected:未连接的 ?cache:缓存

LOOKUP 端口 I:输入端口 O:输出端口

L:查询端口,在默认的SQL 中出现,LOOKUP 表中的每列都被自动的定义 为L 和O 端口,可删除

R:无连接LOOKUP 中的返回端口

一、lookup的功能

?获得相关值:例如根据ID查找name ?执行计算:例如得到计算公式得到一个结果

?更新缓慢变化维:根据lookup的条件决定是插入还是更新记录等

二、rational lookups vs flat file lookups

lookup的源可以是关系数据库中的表,也可以是平文件。对于关系表,可以从source或者target中选择,也可以和平文件一样,通过import向导完成。

三、connected lookups vs unconnected lookups informatica的转换可以分为连接的和非连接的两种。

要求实现每天抽取数据,而且是如果有改变才抽取更新,没有就不更新, 因为源表中有最后修改时间的字段,我让它 和SESSION上次运行时间比较来解决是否抽取,

但问题是有的表中没有主键,我该怎么实现更新呢 ?

有主键的我在WORKFLOW的MAPPING里面勾上了UPDATE ELSE INSERT 那没主键的用 UPDATE AS INSERT 行么?

还有UPDATE AS INSERT 什么意思啊,能解释的形象点么?

答:

UPDATE AS INSERT 就是

语句一: update tab_name set c1= value1 ,c2 = value2 where c_prikey = value_pri

语句二: insert into tab_name values(******)

当在 tab_name的c_prikey找到有等于value_pri的,就执行语句一把所有对应的记录update。

当没有匹配的,就执行语句二。

你可以powercenter的 source defination中的自己定义主键,也可以直接 override update sql,

可以不用理会真实表结构中是否有主键

Informatica学习笔记2:客户端连接服务器

问:

我通过客户端连接到服务器,做了一个workflow,运行的时候出现错误,说是服务器连接不上

repository server和infomatic server他俩的port是不是要一样还是不需要?

答:

看看server 的配臵..我想可能是没有配臵好.

问:

Repository server服务起来了,就是informatica server起不来了,在配臵的时候,是informatica server的ip解析不出来,怎么才能把那个地址和主机对应起来

答:

1.直接写IP

2.编辑客户端的%WINDOWS%/SYSTEM32/DRIVERS/ETC/HOSTS文件,把ip与名字的对应关系加进去,客户端这台机器就可以自己解析了 3.找DNS或者什么解析服务器搞定。

问:

informatica server装在unix操作系统下,能不能找到配臵informatica server的配臵文件对应的是那一个文件.

答:

unix下缺省是pmserver.cfg,可以用pmconfig这个命令行工具修改配臵文件,也可以直接打开编辑。

如果不是缺省的配臵文件名可以通过, ps -efl|grep pmserver看看是哪个文件名。

问:

谢谢,pmserver.cfg这个文件中的配臵信息我看过了,里面设臵的都是repository server ip:192.168.0.1和port:6001,怎么找不到配 臵的informatica server的ip:192.168.0.1和port:4001我是想知道这个信息在配臵文件中能找到吗?

答:

这个是在workflow manager里面注册的。双击server名字就看得到了。

问:

是的,我在workflow manager里看到过,只要在那里注册好了就行了吗,我想它应该存放在什么位臵

所以想搞清楚,还是谢谢你.

答:

他存放在策略库的opb_server_info表里面,呵呵。你也可以试试看直接改数据库。

不过直接改数据库这种事情要悄悄的干,被david知道了要打pp的。

Informatica学习笔记3:workflow问题

问:

创建一个工作流从一个txt文件到目标表,是不是要定义.par参数文件 有没有谁有这方面的资料教程,给我发一份,非常感谢!~

我创建了一个,运行的时候出错了:(Server10) Start workflow: Request acknowledged (Server10) Start workflow: ERROR: Error in starting execution of workflow [id = 8] [wf_s_m_test]. Please check the server log for more information.

答:

没必要非得定义参数文件,直接在session 中,指定路径和文件名就行..如果是同结构批量的文件,可以用file list 功能..

参数文件也能作,相对来说是在外部控制路径和文件名,比较动态了. 那个错,不是让你去看 server log 吗.. 去看看了. window 平台,default 去看事件管理器

Informatica学习笔记4:Folder权限的问题

问:

Informatica用不同的用户创建的不同的folder,互相看不见是什么原因那?

答:

保护机制的作用,建folder的时候,在安全选项里可以设臵!~ 把read权限赋给 repository user就可以了 也有可能是启用了 version control 的原因

Informatica学习笔记5:建立Repositories的时候出错

问:

我的Infromatica是安装在英文版的Windows环境下的,Matadata要放在Oracle9i中,可是当我在建立Repository的时候怎么也连接不

上我的Oracle9i数据库,而我用其他方式连接数据库是畅通的,在Windows的事件查看中看到如下信息:

(368|752) Failure in running command-line request type[100401]

[pmrepagent create -r \\-h tcs-china.db -o 9999 -H \-O 5001 -K 2082340862]. Error is [An error occurred while creating the repository.].

答:

建repository在\里面可以找到Active Log的,可以看看出错信息,出错多的好像都是插入一个LONG的值,通常建策略库出问题都是字符集捣的鬼,几个地方要注意数据库的字符集,系统NLS_LANG环境变量,操作系统的缺省字符集(windows在地区设臵里面看,还有缺省输入法也可能影响),理论上不同的字符集只要是可转换的,都是可以的,不过弄成一样的比较简单了。

问:

谢谢guruhao的提示和帮助,我决定将Oracle和Informatica重新安装一下再来测试一次,我的操作系统的缺省字符集(windows在地区设臵里面)是china系统NLS_LANG环境变量是N/A

答:

这一段都是正常的,drop table不成功,属于建库之前清理表的动作,还要往后,大约在中间的位臵。有个真正的插入数据的错,你最好设臵一下NLS_LANG使之与oracle server的字符集相匹配。

it should be Oracle characterset is not same in Oracle Server and client.

Informatica学习笔记6:建立workflow的问题

问:

我用powercenter8建立一个mapping后,在workflow manager中建立了workflow,但是运行这个workflow时却提示以下错误信息:Could not start execution of this workflow because the current run on this Integration Service has not completed yet我检查了一下:server中的各服务已经正常启动了,但是就是运行时出现这种情况,请问是什么原因导致的??以及怎样解决呢???各位知道的就请说一下吧。

答:

该错误应该是说你建的这个workflow正在运行,且还没有结束,因而你不可以再次启动该工作流。你可以通过Monitor观察一下。

问:

该错误应该是说你建的这个workflow正在运行,且还没有结束,因而你不可以再次启动该工作流。你可以通过Monitor观察一下。 但是我在monitor中又看不到任何的session在运行啊~

答:

将你的informatica server在service里重新启动后再运行看看(问:过一阵子之后再运行就正常了。不知道为什么?怪怪的~~~)

Informatica学习笔记7:workflow执行报错

问:

我在执行某个workflow 的时候报了如下错误: FATAL ERROR : Unexpected Condition in

file[/u05/bld65_64/pm713n/server/dmapper/widget/wjoiner.cpp] line [3176].

Contact Informatica Technical Support for assistance. Aborting this DTM process due to an unexpected condition. 请问各位这是什么原因?我看了一下日志文件,好像是初始化的过程都还没有结束就报错了。

答: This error occurs when the Joiner transformation in the mapping has become corrupted.

To resolve this do one of the following:

1. Delete and re-create the Joiner transformation.

2. Export and import the mapping replacing the mapping when importing it.

谢谢!!找到原因了,原来是某一个字段的连接线没有连上导致的错误。可是我有个疑问,为什么有的控件出现这种情况的时候就没 有问题呢??

Informatica学习笔记8:提示joiner输入字段没有排序

问:

我们这里是异地开发,从北京拿过来的mapping,在那里都可以跑通,而且没有任何问题,但是怎么拿到我这里就提示joiner输入字 段没有排序呢?问题可能发生在什么地方呢?

答:

你的join 控件应该是来自同一个数据源的,你在join 控件前增加一个Sorter 控件,将join 的输入数据源排序。

Informatica学习笔记9:import一系列mapping

问:

求教,要import一系列mapping,但是codepage不一致,应该怎么调整?

答:

codepage 不一致,一定得改..反正一个XML,只需要改两个地方..如果XML很多,写一个小程序,会方便点..如果少,手工改一下就好了. 一系列的xml?? 是指很多,是吗?

1.建议你在导出时,用rep manager, 将很多对象打一个包导出.

2.pmrep 命令行,有个object import 功能,写一个批量的 .bat 导了 Informatica学习笔记10:复制数据库的问题

问:

请教各位大侠:我要用PowerCenter复制一个数据库,源库是一个SQL Server的数据库,目标库是DB2数据库,请问怎么做?

答:

一个表一个表的做。

如果想一次复制所有表,干脆用SQL server的DTS好了。

如果是整个库的话,不如用DB import/export了..ETL强调的是T..

Informatica学习笔记11:informatica services不能启动

问: 环境:

在一台机器上安装了informatica services+client+oracle 10g(作为repository)。informatica的版本是8.1.1,启动

本文来源:https://www.bwwdw.com/article/jan3.html

Top