1. 描述

公司部门之间都存在层级关系,每个部门都会有唯一的部门ID对应,比如说总部(ID为1),市场部(ID为11,该层级的第一位为第一层的ID值)业务员(ID为111,该层级的第一位为第一层级的值,第二位为第二层级的值),市场部是总部下面的分属部门,业务员是市场部的下属部门,数据库中存储部门信息的时候,都是将所有部门ID放在一个数据列中,并没有将总部作为一个数据列,市场部作为一个数据列,那么在进行数据分析的时候,如果要显示各个部门的层级关系,并按照层级关系分组显示数据,就没法直接添加维度来实现分组效果,如下图效果,这个该如何实现呢?

BI工具教程构建自循环列

商业智能系统FineBI为了实现这种层级关系提供了构建自循环列功能,自循环列一般应用于上述的列内分组以及下拉框的层级选择,设置方式完全相同,以列内分组为例,下面详细介绍。

2. 示例

一般来说,拥有层级关系的ID有2种存储方式:

  • ID长度不一致

如公司部门表中数据,ID的长度不一致,每增加一个层级,长度就会增加相应位数,并且前面的数据与上一级保持一致:

BI工具构建自循环列2

  • ID长度一致
如下图,ID的长度保持一致,长度为部门的总层级数乘以每个层级的相应位数:

BI工具构建自循环列3

以公司部门表中数据为例,为BIDemo业务包添加公司部门表。
点击公司部门,进入公司部门配置界面,单击构建自循环列,可以看到构建自循环列有两种方式:一个是根据一列数据分层,一个是根据两列数据分层,如下图:

BI工具构建自循环列4

下面根据构建方式的不同分别讲解。

3. 根据一列数据分层

FineBI商业智能平台根据一列数据分层是指根据有层级关系的一列数据直接构建每个层级的数据列,一般在数据库中只有该部门ID列,没有上级ID列的时使用。

3.1 构建关系

在FineBI商业智能平台的构建自循环列中选择根据一列数据分层,由于有层级关系的列为部门ID,所以分层依据的ID列选择部门ID,如果分层依据的ID的长度都是一样的,即像上面所说的第二种层级关系的存储方式,那么,在构建关系时,需要输入分层长度,以上述ID长度一致的数据表为例,分层长度是2,即每2位代表一个层级,自循环构建如下图:
BI工具构建自循环列6

3.2 新增列名称

点击FineBI商业智能平台的构建关系,就会显示所有级别,并需要给各个级别重命名,点击保存,即可在数据表的配置界面看到新增的数据列,再点击保存,自循环列就构建好了。注:新增的自循环列是不参与数据分析的。

3.3 新建分析

点击BI>新建分析,新建一个即时分析,拖曳表格组件至BI分析页面,由于新增自循环列不参与分析,所以只能将BIDemo业务包中的公司部门表的部门名称作为行表头,记录数作为数值区域的指标,如下图:

 

BI工具构建自循环列8

 

横向表头会显示红色,提示其没有与值标签建立关系,这是因为部门ID作为自循环列的基础列,增加了3个数据列,导致该表中的所有字段均对应有3个数据列,如果让部门名称与部门记录数关联,必须通过新增的3个列去关联,那么可以通过3条路径进行关联,3条路径分别是新增的3个字段,即关联关系不再唯一,所以需要重新建立关联关系。
点击行表头部门名称后面的下拉按钮,选择维度与指标的匹配关系选项,进入指标的标签数据界面,设置关联字段,点击修改选中的1个指标的维度字段,选择对应维度字段,点击公司部门>部门名称,可以看到部门名称字段下面有子字段,这是因为部门ID构建自循环列,增加了3列,对应的,部门名称也增加了3列数据,这里选择一级.部门名称,如下图:

BI工具构建自循环列9

将指标名称修改为一级部门,点击保存配置之后,一级部门名称就已经设置好了,此时,行表头的部门名称指标不再显示为红色,且下方表格中显示所有一级部门名称的数据。

类似于一级部门名称的设置方式,再为行表头添加2个指标维度,指标字段均为部门名称,并设置数据标签,分别关联二级部门名称和三级部门名称,切修改指标名称为二级部门和三级部门,即可完成设置。

3.4 效果查看
FineBI商业智能BI工具构建自循环列效果如下图:

BI工具构建自循环列10

 

4. 根据两列数据分层

FineBI商业智能平台根据两列数据分层是指根据现有数据表中的2列数据,一个是所有层级的部门ID,还有一列数据指定对应层级的上级部门ID,在这种数据结构下,可用根据两列数据分层。

4.1 构建关系

根据一列数据分层的设置方式类似,选中数据表,点击构建自循环列,选择根据两列数据分层,点击构建关系,接下来的设置过程和使用过程同根据一列数据分层,这里不再赘述。