1. 描述

数据库中存的数据是从实际业务的发生过程中产生的,但是数据在存储过程中,存储的字段名和表名却不一定是实际业务过程或业务名称,一般都需要转换为缩写的英文,而在使用数据库中数据时,这些缩写的字段名和表名的可读性就非常差,所以数据库管理员在建立数据表的时候就会建立一种注释来转义数据,注释中描述了字段名和表名的实际名称等等信息。
商业智能FineBI在业务包从数据库中取数时,为了增强数据的可读性,将数据转换为业务人员能够理解的含义,提供了读取数据表转义功能,能够将注释转义数据读取出来,并作用在Cube的数据上,提升数据的可读性,能够一目了然的知道该数据表和字段中存储了什么数据。
注释转义数据一般都放在数据库的注释中,但是有些数据的注释转义数据却是存在数据库表中或者excel中,所以FineBI商业智能平台提供两种不同的方法来读取两种不同存储位置的注释转义数据。数据库中的注释可通过业务包管理界面的读取数据库转义功能直接读取,而存在数据库表中或者excel中的注释则通过服务器数据集实现,下面详细介绍:

2. 直接读取数据库转义

单击商业智能系统平台中的BIdemo业务包,进入数据表管理界面,可以看到数据表名称均为英文名,点击右下角的读取数据库转义按钮,业务包就会从数据库中读取转义注释,如下图,BIdemo业务包中的9个表中,有15个列名有转义:

商业智能FineBI读取数据转义

注:读取数据库转义后,其对应数据保存在%BI_HOME%\WEB-INF\resources\bi_connection.xml文件夹中,如果要删除转义数据,直接删除xml文件即可。

3. 读取数据库表或excel中注释转义数据

如果注释转义数据并不直接存在数据表的注释里面,而是单独的放置在某一个数据表或者excel中,如下图,在mysql数据库中有2张表,transfer和transferfield表,里面分别存着oracl数据库中的几个表名的注释转义和SALES1K表字段名称的注释转义:

商业智能FineBI读取数据转义1

3.1 新建数据连接

上图中的两张表分别是oracle数据库中某些表名称的转义和sales1K表中字段名的转义,首先在BI属性配置中添加2个数据连接,一个注释转义表所在数据库mysql,另一个是被转义数据所在的oracle数据数据库。
点击管理系统>BI数据配置>数据连接管理,进入数据连接管理界面,点击新建数据连接,建立2个数据连接,一个oracle数据连接,与oracle数据库相连接,另一个mysqltest,与mysql数据库相连接,如下图:

 

商业智能FineBI读取数据转义1

建立数据连接详细请查看配置数据连接

 3.2 数据表名称转义

点击管理系统>BI数据配置>ETL数据转化,在服务器数据集配置面板中添加一个服务器数据集,重命名为__bi_translated_table_names__,该数据集有四个固定字段:
connection_name:被注释转义的数据表所在的数据连接;
schema_name:被注释转义数据所在数据库的模式,针对于oracle数据库,如果数据库没有模式选项,使用NULL代替;
table_name:存储在数据库中表的名称,一般为英文;
translated_table_name:注释转义数据中对数据库中表的转义名称,一般为中文。
注:数据集名称,字段名称均不可改变。
将上面mysql数据库中的transfer表的注释转义数据添加到__bi_translated_table_names__数据集中,其中被转义数据所在的数据连接名为oracle,数据库模式为scott。SQL语句如下:
select ‘oracle’ as connection_name, ‘scott’ as schema_name, table_en as table_name, table_ch as translated_table_name from transfer
__bi_translated_table_names__服务器数据集需要在注释转移数据所在的数据连接的基础上添加,SQL语句应该写在mysqltest数据连接的基础上。

注:由于transfer表中没有connection_name和schema_name对应的注释,所以往这两个字段中添加常量,要注意使用单引号,如果不是被转义数据所在数据库中没有模式选项,schema_name常量使用NULL。

点击确定,服务器数据集配置面板中添加一个名为__bi_translated_table_names__的服务器数据集,如下图:

3.3 数据表字段名称转义

类似于数据表名称转义,字段名称转义也需要添加一个服务器数据集,名称为__bi_translated_field_names__,该数据集有五个固定字段:
connection_name:同数据表名称转义;
schema_name:同数据表名称转义;
table_name:同数据表名称转义;
field_name:存在数据库中数据实际的字段名称,一般为英文;
translated_field_name:注释转义数据对数据库中字段名的转义名称,一般为中文。
注:数据集名称,字段名称均不可改变。
将上面mysql数据库中的transferfield表的注释转义数据添加到__bi_translated_field_names__数据集中,SQL语句如下:
select ‘oracle’ as connection_name, ‘scott’ as schema_name, table_field as table_name, field_name_en as field_name, field_name_ch as translated_field_name from transferfield

3.4 业务包读取转义数据

点击管理系统>BI数据配置>业务包管理,新增一个业务包,选中oracle数据连接,将上述transfer表中的table_en字段中涉及到的表以及transferfield表中table_field字段中涉及到的表均添加至业务包中,业务包命名为BIdemo2。

点击读取数据库转义,页面会弹出如下提示框提示用户是否从服务器数据集中读取转义。点击确定,外部数据表中的转义通过2个服务器数据集读取进BIdemo2业务包中。
注:上图的提示框,点击确定,商业智能系统FineBI的业务包就去服务器数据集中读取外部数据表中的转义数据,那么数据表内部的转义数据就不会读取,如果点击取消,那么就会去读取数据表内部的转义数据,所以如果既要读取内部转义数据,又要读取外部转义数据,操作两次即可。

 3.5 效果查看

点击确定之后,数据表名称和字段名称转义都已经被读取进来,如下图:

商业智能FineBI读取数据转义1

 

注:数据表名称和字段名称的转义既可以直接从数据库中读取,也可以手动添加,详细请查看手动设置表和字段的转义名称