1. 描述

FineBI商业智能BI工具中的行列转换特指将关系数据表中的行转换为列,简单来说就是将转化前数据表中某个字段的所有值取出来,配以某个指标字段,成为新表的列名。

2. 示例

如下图所示的数据表stscore,每个学生都有5门课程的成绩,存储在数据库中占据5条记录:

商业智能系统行列转换

那么如何使每位学生的成绩只占据一条记录呢,也就是说,将不同学科的值作为字段名,实现如下图效果:

商业智能系统行列转换

2.1 源数据表

ETL转换表需要基于一个原始表,我们以上图的stscore表为例,该数据表存在于另外一个数据库中,不存在于BIdemo业务包中,故,首先我们需要新建一个数据连接,用来获取该张源数据表,点击数据配置>数据连接管理,新建一个数据连接mysql,配置如下图:

商业智能系统数据源表

点击确定即可。

2.2 新建转化表

点击业务包管理,选中BIdemo业务包,在业务包管理界面点击+ETL表按钮,页面跳转到ETL处理界面,点击右上角的添加表按钮,在数据表选择页面中选中mysql数据连接,选中该数据连接下的stscore表,如下图:

BI工具新建转化表

注:如果数据表过多,可在快速搜索栏中进行搜索。
点击下一步,即可进入数据表设置和ETL处理界面,如下图:

BI系统ETL处理

2.3 ETL行列转化

被转化的表添加完成之后,点击右侧ETL处理中间的表名称按钮,进入行列转化配置界面,如下图:

BI工具ETL行列转换配置

根据字段识别生成的指标所在列:是指数据表中根据需要转化的字段值重复的字段,如上示例,name和studentno就根据需要被转化字段course的值重复出现,那么该下拉框中的字段可以选择name或者studentno;
栏次名:是指需要被转化的行字段名称,如上示例,是指course字段;
原始指标字段:是指被转化字段所对应的值字段,如上示例,是指grade字段。
设置完成后,效果如下图:

BI工具ETL转换

点击保存直到回到表设置页面。
注:如果要更改ETL转化表的结构设置,点击右侧ETL处理中的行列转化即可。
点击保存,回到业务包配置界面,可以看到业务包中多了一个stscore_concert的数据表

2.4 效果查看
在FineBI商业智能系统中新建一个明细表的数据分析,其数据来源于业务包BIdemo下面的stscore-convert表里面的所有字段,如下图:

BI工具行列转换效果查看

字段添加完成之后,可以看到如下图明细表,每个学生只有一条记录,所有学科都转化为字段名,与上图效果一致。