粤磊 informatica powercenter学习笔记(五)

上一篇 / 下一篇  2010-11-22 16:33:14 / 精华(1) / 置顶(1) / 个人分类:INFORMATICA POWER CENTER

查看( 390 ) / 评论( 8 )

以前在做DBA时在DB里写过行转列,列转行的CODE.这两天做了一下测试用INFORMATICA来实现行列互换的功能。

列转行的SQL实现

ENV: RMDB

TABLESALES

 STORENAME QUARTER1 QUARTER2 QUARTER3 QUARTER4

 STORE1                  100                 300                 500                 700

 STORE2                  200                 400                 600                 800

SOLUTION

 

SELECT STORENAME,QUARTER1 AS SALES, 1 AS QUARTER

FROM SALES

GROUP BY STORENAME,QUARTER1

UNION

SELECT STORENAME,QUARTER2 AS SALES, 2 AS QUARTER

FROM SALES

GROUP BY STORENAME,QUARTER2

UNION

SELECT STORENAME,QUARTER3 AS SALES, 3 AS QUARTER

FROM SALES

GROUP BY STORENAME,QUARTER3

UNION

SELECT STORENAME,QUARTER4 AS SALES, 4 AS QUARTER

FROM SALES

GROUP BY STORENAME,QUARTER4

 

 

列转行的INFORMATICA实现

 

1 SOURCE TABLES导入MAPING

2 SQLQUALIFER读取数据

3 NORMALIZER实现对应的列行转换,在NORMALIZER属性里设置STORENAME,QUARTER DATA(LEVEL 1每季度的销售值SALESLEVEL2. QUARTER DATAOCCURS值设为4就可实现列行转换

 

 

二  行转列的SQL实现

ENV:

createtablesales2(storenamevarchar(20),

salesnumber(9),quarternumber(9))

select*fromsales2

SOLUTION:

SELECTSTORENAME,

 MAX(CASEWHENQUARTER=1THENSALESELSE0END)QUARTER1,

 MAX(CASEWHENQUARTER=2THENSALESELSE0END)QUARTER2,

 MAX(CASEWHENQUARTER=3THENSALESELSE0END)QUARTER3,

 MAX(CASEWHENQUARTER=4THENSALESELSE0END)QUARTER4

 FROMSALES2

 GROUPBYSTORENAME

 ORDERBYSTORENAME

INFORMATICA实现

1       导入源表SALES2

2       SQLQULIFER读取数据

3       EXPERSSION TRANSFORMATION来判断QUARTER值来取SALES

   4  用聚合函数来取出判断后的最大值,即真正的SALES

   

5导入到目标表或目标文件后即实现了行转列的功能。

 

 

附件是我在DB及INFORMATICA上做的测试截屏,需要的话可以参考一下,呵呵。

.


 

 


TAG:

m04002607发布于2010-11-27 23:27:43
好久不见了。。。我是Kant。。。哈哈
AAA wangfans 发布于2010-11-28 13:51:09

太极虫的个人空间 kelsoncong 发布于2010-12-01 12:24:21
哈哈,不错的总结,再接再厉!
rightleave发布于2010-12-02 23:13:28
It's pretty useful sometimes when doing ETL. Thanks for sharing!
vzyuelei9的个人空间 vzyuelei9 发布于2010-12-13 23:44:04
谢谢各位!最近看了些MDX的语法,感觉如果有OLAP的环境中,用MDX语法会很方便,但在ETL或OLTP中还是会用到这些的,呵呵
sanshao123321的个人空间 sanshao123321 发布于2011-02-16 17:48:38
设置level的用途?
在normalizer中设置level的用途?
vzyuelei9的个人空间 vzyuelei9 发布于2011-02-18 12:16:50

QUOTE:

原帖由 sanshao123321 于 2011-2-16 17:48 发表
在normalizer中设置level的用途?
Level作用相当于SQL中的GROUP分层,OCCURS相当于LOOP中的循环控制。上传个我设置的LEVEL图形界面你参考下,呵呵。
LEVEL.JPG

LEVEL.JPG

ciwei_no1的个人空间 ciwei_no1 发布于2011-11-04 17:35:06
求助
可以发个行转列的xml文件吗? 谢谢。我的邮箱是malei890@126.com
我来说两句

(可选)

日历

« 2012-05-24  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 5680
  • 日志数: 20
  • 图片数: 1
  • 建立时间: 2009-09-01
  • 更新时间: 2011-06-20

RSS订阅

Open Toolbar