1. 描述

通过时间类控件章节,我们知道可以直接通过该控件对时间类型的数据进行过滤,但是,实际上,数据库中存储的与时间相关的数据的数据类型不一定是时间类型的,很多时候会以文本类型存储到数据库中,此时就只能使用文本类型控件来进行过滤,导致数据显示性能差,使用不如时间类控件方便,那么如何才能使文本类型的时间数据使用FineBI商业智能系统的时间类控件进行过滤呢?

2. 实现思路

通过新增公式列,在原有的文本类型时间数据的基础上使用公式将其转换为时间类型字段,然后使用该转换后的字段进行数据分析。

3. 数据准备

登录FineBI商业智能分析页面http://localhost:8080/FineBI/ReportServer?op=fbi,点击数据配置>业务包管理>常见应用业务包,添加一个数据表,如下图:

商业智能分析数据准备

数据表的添加步骤详细请查看数据表管理

4. 新增公式列

contract_copy数据表中有一个SignTime字段,该字段里面显示的是时间数据,但其数据类型为文本类型,如下图:

商业智能分析新增公式列

下面我们将该字段类型转换为时间类型。
在右侧的ETL设置面板中,点击表名称按钮,选择对该表-新增公式列,如下图:

商业智能分析新增公式列

4.1 公式转换

在公式列管理界面,点击添加公式列按钮,在弹出的公式转换窗口中输入新增公式列名称,选择数据类型,并输入公式转换的公式,如下图:

商业智能分析公式转换

注:FORMAT(object,format) : 返回object的format格式。object 需要被格式化对象,可以是String,数字,Object(常用的有Date, Time)。format 格式化的样式。示例 FORMAT(1234.5, “#,##0.00″) => 1234.50 FORMAT(1234.5, “#,##0″) => 1234 FORMAT(1234.5, “¥#,##0.00″) => ¥1234.50 FORMAT(1.5, “0%”) => 150% FORMAT(1.5, “0.000%”) => 150.000% FORMAT(6789, “##0.0E0″) => 6.789E3 FORMAT(6789, “0.00E00″) => 6.79E03 FORMAT(date(2007,1,1), “EEEEE, MMMMM dd, yyyy”) => 星期一,一月 01,2007 FORMAT(date(2007,1,13), “MM/dd/yyyy”) => 01/13/2007 FORMAT(date(2007,1,13), “M-d-yy”) => 1-13-07 FORMAT(time(16,23,56), “h:mm:ss a”) => 4:23:56 下午
点击确定,重命名表名称为contract_copy_转化

5. Cube更新

保存业务包,回到数据配置界面,选择Cube更新设置,点击立即更新多维数据库按钮将数据库中的数据更新到Cube中。

6. 效果查看

点击新建分析,新建一个名为time的即时分析,拖曳一个年月控件至即时分析页面,如下图:

商业智能分析年月控件数据绑定

点击控件右上角的按钮进行数据绑定页面,如下图:

商业智能分析年月控件数据绑定

注:为时间类型控件绑定字段时,右侧的数据列表中只会显示时间类型的字段,如果没有对signTime字段进行数据类型的转化,那么该控件将无法与signTime进行绑定。