【Informatica】使用Normalizer实现数据格式转换

在Informatica开发中,我们可以使用Normalizer组件实现数据格式转换。首先介绍下Normalizer组件的一些属性参数。

Attribute

Description

Column Name

Name of the source column.

Level

Group columns. Columns in the same group occur beneath a column with a lower level number. When each column is the same level, the transformation contains no column groups.

Occurs

The number of instances of a column or group of columns in the source row.

Datatype

The transformation column datatype can be String, Nstring, or Number.

Prec

Precision. Length of the column.

Scale

Number of decimal positions for a numeric column.  



实例1

源数据

Name~Score1~Score2

Jim~80~70

转换结果

Name~Score

Jim~80

Jim~70


实现以上转换,我们只需要创建一个Normalizer, 在Normalier Tab下创建两个Field

Name:  0(Level), 0(Occurs)

Score :  0 (level),2(Occurs)-- 意味着有2列需要转置



创建完成后,Normalizer会自动按照刚才的设置生成相应的列。

Name_in,Score_in1, Score_in2 和相应的源表列(Name,Score1,Score2)对应连接起来。

Name,Score将存放转换生成的数据。

GK_ID 为转换后的数据生成一个ID。

GCID_Score 存放数据原来所在的Column ID。如果这里Score是80,GCID_Score就为2,指明数据在源表的第二列。


实例2

源数据

Name~Course1~Score1~Course2~Score2

Jim~Chinese~80~English~70

转换结果

Name~Course~Score

Jim~Chinese~80

Jim~English~70


这里的数据有一个层级关系,我们的设计也需略有不同。

同上创建3个Field,Name, Course和Score

然后点击Course,再点击“》”,生成一个Field,命名为Name,同样在Score上点击“》”。这样根据level,就得到了一个列之间的层级关系。


设置Course,Score的Occurs都为2。完成之后,得到如下图的Normalizer组件。


最后,连接相关组件的列即可。







你可能感兴趣的:(ETL)