Informatica 简单使用
1. Informatica简介
① Repository manager 主要用来维护资料库的目录,对象,建完对象可以创建demo的folder。
② Administration Console是完全基于web的,管理所有的节点,服务,在里面包括资料库的一些用户,权限等信息。
③ Designer主要用来设计mapping。Mapping是informatica的一个映射,也就是说是ETL的一个规范,包括对源,目标,过程的设计。
④ workflow主要用于将mapping实例化,也就是设计一个session,如果session很多的话需要将它们设计成一个串行或者并行的过程,它们组成的session就叫做workflow,即工作流。
⑤ workflow monitor用来监控、执行workflow。
⑥ 控件:Source Qualified Transformation:ETL经常会用到的组件,对数据源,包括文件,也包括数据表进行抽取。无论数据源是表还是平面文件源,都会用到该组件。
2. 新建带过滤条件的workflow
D:
① 选在source,import source ,odbc data source中选择oracle的odbc设置,如果没有,要在管理工具中自行设置,具体如图。
② 同理,在target中设置目标数据表的连接,然后设置mapping,设置成功之后,转入w中设置工作流,
W:
① 在edit task->mapping中,source和target分别要设置源和目标的连接驱动。
② 在edit task->properties->parameter filename里面写入参数所在文件夹的地址(该参数在服务器的目录下,是事先设定好的文件)。
③ 在左项目条件source 中,edit task->mapping->source filter里面写入过滤的参数条件。
④ 在左项目条件target中,edit task->mapping->pre SQL里面写入执行前的更新数据表语句。
注意事项:
目标表的的数据表如果带有系统目录前缀,在设置mapping的连接条件时将无法识别前缀,因此没有办法传输数据。
3. 在Designer中设置过滤参数问题
① 设置参数之后,参数的默认值是字符如图,M中运行结果错误,无法解析参数,数据没有被导入。
4. 往GP数据库中导入平面文件源。
① 要将所导入的文件放入服务器的目录下,先在informatica控制台设置目录。
② 设置workflow时,在source里设置如下目录,其中source filetype包含两种情况,Direct设置如下图
③ indirect方式是选择表名列表文件,按文件列表运行。
5. 设置同时将两个表导入一个数据表中的workflow
6. 两个并无关联的mapping一起运行
① 在target load plan里面设置mapping运行的先后顺序。
7. 带expression Transformation组件的workflow
① 导入源表
② 手工创建目标表,可以在target菜单中选择great创建,也可以复制目标库中类似的表进行修改。前提是目标库中存在这样的表。
③ 手工创建目标表,target菜单下,generate/execute SQL
④ Filtertransformation组件:过滤组件将传到目标表的数据进行筛选,过滤。过滤不能对原来的表字段进行修改。值改变传递值的行数。
⑤ Expression Transformation组件:不改变抽取数据的行数,是被动的函数组件。不能实现汇总级的函数的操作。执行的先后顺序,先执行input,后执行valuable,valuable相当于一个局部的变量,按照顺序执行,后执行output。
⑥ Reusable Transformation组件:
8. Workflow的调度方式
① 手工执行(现在都是在手工执行)
② Workflow scheduler(调度程序调度)
③ pmcmd startworkflow
④ command task
⑤ worklet
9. informatica语法规则
① 输入的字符用 单引号 扩起来,连接字符用 || ,基本跟oracle保持一致。
② DECODE(IN_GENDER, 'M', 'MALE', 'N', 'FEMALE', 'UNK')
DECODE(TRUE,
IN_AGE < 20, 'LESS THAN 20',
IN_AGE >= 20 AND IN_AGE <= 29, '20 TO 29',
IN_AGE >= 30 AND IN_AGE <= 39, '30 TO 39',
IN_AGE >= 40 AND IN_AGE <= 49, '40 TO 49',
IN_AGE >= 50 AND IN_AGE <= 60, '50 TO 60',
IN_AGE > 60, 'GREATER THAN 60'
)
DECODE(字段名, '条件1', '返回值1', '条件2', '返回值2', '缺省值')