野路子实现的轻量级伪OLAP展示
前一段时间花了一些时间搞了一个自己称为轻量级伪OLAP的东西,当然实现方法是不值一哂的野路子,甚至UI上用的一些名词都是用来糊弄不懂的人的,不要太当真,前台展示使用ExtJS + FusionCharts Free,看看效果吧(由于图片较大,排版需要,请单击图片在新窗口中查看图片):
初始界面比较简洁,一个Web下实现的MDI子窗体。
将右侧“查询条件”区域展开,选择相应的开始和结束日期,单击“查询”按钮,在窗体的中间空白区域将显示查询结果图表。
单击工具栏按钮“图表数据”,窗口下部显示以二维表形式显示的图表数据。
图表的大小可以拖动图表右下角的句柄手动进行调整。
可以依据不同的数值型字段对数据记录进行图表分析,方法是使用“聚合类型”菜单下的菜单项,如上图使用“记录计数”生成图表。
“聚合类型”菜单项是自动生成的,配置选项存储在数据库中。
切换“聚合类型”为“费用合计”后,显示的图表数据发生了变化。
数据记录中包含了一些比较简单的数据结构,如检查类别只有四项:单位自检、安监部门检查、领导检查和专业小组检查,所属专业只有采、掘、机、运、通、地测、其它等七项。系统可以根据这些较简单的数据结构生成相应信息的堆叠图表(Stacked Chart),包括堆叠柱状图、堆叠条形图和堆叠区域图。
数据库中存储的关于堆叠图表的选项,也就是说生成哪些堆叠图表也是可以进行配置的。
在弹出的新MDI子窗体中显示按照“检查专业”细分的柱状堆叠图表。
堆叠图表界面也有相应的工具栏按钮,例如“图表类型”。
将柱状堆叠图表切换成条形堆叠图表显示效果更好一些。
由于不同的图表类型表示的含义不同,该图表可以方便使用“图表类型”下拉菜单在柱状图、折线图和饼图之间进行转换。
当图表要显示的数据项较多时,可能出现图表宽度不够的情况,如图所示,图表x轴数据项名称重叠在一起,“图表宽度”工具栏按钮的下拉菜单项用于对图表宽度进行调整。
同上,如果数据项较多时,可以使用“显示条数”工具栏按钮下的菜单项来限制数据项显示数量。
“字符串截取”同样是为了解决x周数据项名称重叠问题的;“保存布局”选项可以保存当前图表的宽度、显示条数等信息,用户下次进入该模块后将以当前图表宽度、显示条数等选项来显示图表。
在特定实体(图表中的某个项目)上,单击左键,可以弹出如上图所示菜单,在该菜单上可以查看形成该图表项目的明细数据、进行向下钻取操作以及形成时间趋势图。
“向下钻取”意味着对当前数据的构成进行细分,系统可以按照自定义的类别类型无限向下细分数据,直到找到用户预期的数据为止。
对项目类别的钻取:例如“崔矿综掘四”的记录数是615,在“项目类别”上的分布是:管理缺陷(363)、现场环境(57)、非伤事故(37)和隐患(158)。
“向下钻取”是可以无限向下进行的,如对于路径“崔矿综掘四”——“管理缺陷”还可以继续以其它类别向下钻取,但已经钻取的类别“项目类别”无法重复使用,所以灰化了。
对于任一数据项,可以按照日、周、月份、季度、年份等时间层次生成时间折线图。
如“崔矿综掘四”的615条数据在一年中每天的分布情况是这样的。时间跨度太大,x轴的字符重叠在一起了,但是时间趋势还是看得很清楚的。
调整一下图表宽度,这样可以看清楚些。
使用“时间跨度”工具栏,切换时间层次为“周”的显示结果。
到这里,这个图表分析功能介绍完了,当然,大部分篇幅都是贴图,文字描述太少,再加上具体业务的关系,有人可能不是很明白我要干嘛,呵呵,当我是在介绍、推广ExtJs和FusionCharts Free也行啊,虽然没有介绍它们的具体使用方法,至少对可以做到的效果有个概念了。所谓的轻量级伪OLAP,纯粹是我胡扯,虽然有些那个意思,但是明眼人一下就看出来了,这个分析模块没有使用多位数据集作为数据源,而直接使用的是业务数据,所以注定了只能是一个轻量级的东西。另外,“聚合类别”、“堆叠图表类别”,甚至“向下钻取”等都是用户可以自己进行配置的,这也保证了面对不同业务时的适用性。
Life is like a boat, and I'm at sea.