欢迎来到天天文库
浏览记录
ID:55505763
大小:328.00 KB
页数:7页
时间:2020-05-15
《使用Infrmatica组件实现行列转换.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、场景1行转换成列1)目的:将源表中多行记录数转换成目标表中的一行记录2)举例:源表格式序号年份季度销售额(万元)1201311000220132150032013320004201342500目标表格式序号年份第一季度第二季度第三季度第四季度1201310001500200025003)Mapping设计注解1:Sort组件,对转换前的数据进行排序,使之形成按年份和季度排序后的记录;注解2:转换组件,主要行转列逻辑在此组件完成。注解3:过滤组件,过滤得到最终数据(季度值为4的记录);注解4:sequence组件,为目
2、标表创建自定义序列;注解5:目标表,最终目标表数据,每年只包含一条记录;注解6:中间记录,每个季度都对应一条记录。4)详细设计a排序组件按照年份,季度字段进行升序排序。B行转列转换组件端口分为两类:输出端口(红色框)和变量部分(蓝色框)变量作用:季度销售额中间变量(q1_pre、q2_pre、q3_pre):保存各季度销售额的临时变量季度销售额变量(q1_v、q2_v、q3_v、q4_v):给目标表各季度销售额赋值执行原理:处理源表第一条记录时,season=1成立,q1_v被赋值为salary的值(1000),q2
3、_v、q3_v、q4_v仍为默认值0,此时q1_pre=q1_v=1000,q2_pre=q2_v=0,q3_pre=q3_v=0.处理源表第二条记录时,season=1不成立,q1_v=q1_pre=1000(q1_pre前面已经赋值为salary值);season=2成立,q2_v被赋值为salary的值(1500),同时q2_pre=q2_v=1500,q3_v、q4_v仍为默认值0;依次类推,直到第四条记录处理完,各变量的值都对应赋予各季度的销售额。C过滤组件最终得到季度为4的记录作为目标表的输入。5)结果展
4、示目标表记录中间表记录场景2列转行1)目的:与场景1刚好相反,将源表中单行记录数转换成目标表中的多行记录2)举例源表格式序号年份第一季度第二季度第三季度第四季度120131000150020002500目标表格式序号年份季度销售额(万元)12013110002201321500320133200042013425003)Mapping设计注解1:Normalizner组件,本设计中的核心组件,实现列转换成行的逻辑设计。注解2:表达式组件,将Normalizner组件输出的季度替换成目标格式。4)详细设计A)Norma
5、lizner组件主要操作在Normalizener选项页,通过Occurs属性来设置某个字段的发生次数。这里因为一年中四个季度都有salary,所以这里设置为4.配置好以上属性后,Normalizner组件自动生成了输入和输出端口其中GCID_salary为季度属性,从1开始取值(1代表第一季度)。B)表达式组件将Normalizner组件生成的季度值替换成Q1,Q2,Q3,Q44)结果展示
此文档下载收益归作者所有