![]() |
|
首页 | 联系我们 | 网站地图 | English | |||
| 技术支持热线:+86 21 68531770 68531771 | 试用下载 | ||||||||
| 产品中心 | 报表技术漫谈 | OLAP技术漫谈 | 下载与服务 | 市场与合作 | 新闻中心 | 关于我们 |
| 柔性化报表设计 | |||
|
上一篇我们介绍了常规的九套模型,通过对这九套模型的组合,我们可以设计出绝大多数报表样式。那么,如何设计处理非常规的特殊报表需求,本篇将为您举例阐述。 数巨商业智能系统(Max@X Analyser)功能优越性在于对报表元素的控制能力:报表由数据记录和表现元素组成,而Max@X Analyser可以做到在报表每一元素的展现前、中、后各个阶段,对当前关联数据记录和元素属性(位置、大小、颜色、线条等)进行控制和运算。从而满足任意苛刻的设计需求。 下面是一些报表设计中常见的例子,大家不妨来看看针对这几张报表的需求,Max@X Analyser的实现思路与算法: 1、类甘特图混合表 以下报表看似普通,不过是甘特图和表格的结合而已。然而,难点就在这里:如何做到甘特图中的进度条分行与表格一一对应? ![]() 在实际设计中,这张报表使用了Max@X Analyser的一个设计特征:设计控件之间的属性无关性,不同设计控件在摆放上可以重叠,并且在循环创建的实际对象上可以拥有各自的属性而相互不影响。 看看如下设计界面: 从上述设计界面可以看出,甘特图的进度条是使用一个填色格控件是独立重叠摆放的,可以根据数据行数进行自动循环复制,并逐行进行报表运算,根据运算数据结果来调整当前起始位置与长度,从而达到与表中其他数据行同步的显示效果。 通过这张报表可以得出Max@X Analyser的一些基础特征:1. 设计控件之间的属性相对独立、2. 同一控件不同衍生实例的属性相对独立、3. 控件实例在衍生过程中的属性精密可控。这些特征是Max@X Analyser对报表进行柔性加工的基础。 2、多次分组聚类交叉统计 下面这张报表是一个针对同一原始数据源,进行多次分组聚合运算后的交叉统计表。难点在于:第一,同样的数据,要分别按照性别和年龄段进行两次统计,这和一般交叉报表的一次分组聚类是有本质差别的;其次,在按年龄段分组统计中,是一个动态的分组统计,数据库表中只有年龄,而没有年龄段。 下图为原始获得的数据源内容: ![]() 下图为设计出的报表表现样式: ![]() 实现这张报表需要用到Max@X Analyser的一个数据运算功能:数据微引擎。所谓数据微引擎,是在Max@X Analyser的脚本中,嵌入了SQL运算的机制,在Max@X Analyser中虚拟了一个SQL运算引擎,从而满足更为灵活的报表运算请求。(注意:这里的“SQL运算”,和“SQL数据源”完全不同。前者的运算是在Max@X Analyser内部完成,偏重于对已获取的原始数据进行动态的、灵活的报表运算处理;后者则是将SQL提交数据库,由数据库进行SQL处理,更偏重于原始数据的获取。) 针对上表的处理,实质上是在Max@X Analyser中对获取的原始数据进行了多次SQL聚类运算,比如,对年龄段“24岁到40岁”的运算类似于: SELECT 分公司, 部门, SUM(员工ID) AS 员工数量 WHERE 年龄>= 24 AND 年龄< 40 GROUP BY 分公司, 部门 。 当然,使用某些特定的函数,也可以实现这些功能。然而,毕竟函数的功能有限而且单一,不能适用于各种变化的需求。相对而言,采用脚本形式,在脚本中模拟SQL机制进行运算,不仅可以保证强大的可扩展性以适应各种变化需求,并且有效地降低了用户的学习负担,相信对于专业人员来说,SQL语句应该是再熟悉不过的工具了吧。 针对数据微引擎,在《数据微引擎与动态指令》一文中有进一步的详细阐述。 (未完) |
|||||||||||||||||||||||||||||||||||||||
| |
首页 | 联系我们 | 网站地图 | ||