文本类型时间字段过滤性能优化

编辑
文档创建者:夏娃 (超级管理员 )     浏览次数:793次     编辑次数:5次     最近更新:doreen0813 于 2017-08-01     

1. 描述编辑

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

2. 实现思路编辑

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

3. 数据准备编辑

登录FineBI即时分析系统页面http://localhost:37799/WebReport/ReportServer?op=fs,点击数据配置>业务包管理>BiDemo业务包,添加一个数据表,如下图:

222


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

4. 新增公式列编辑

签约事实表数据表中有LOAD_DATEAUDITINGDATE字段,该字段里面显示的是时间数据,但其数据类型为文本类型,如下图:

222

222


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

222


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

222


222
注: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 下午
点击确定,重命名表名称为签约事实表_formula
其他相关公式请参考函数专题。

5. FineIndex更新编辑

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

6. 效果查看编辑

点击新建分析,新建一个名为time的即时分析,拖曳一个年月控件至即时分析页面,
点击控件右上角的按钮进行数据绑定页面,如下图:

222


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

附件列表


主题: 新建仪表板
标签: 暂无标签 编辑/添加标签
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(微信ID:frbiaoge)

本文档是否有用?
谢谢! 我们非常感谢您的反馈。
提交反馈: