![]() |
|
首页 | 联系我们 | 网站地图 | English | |||
| 技术支持热线:+86 21 68531770 68531771 | 试用下载 | ||||||||
| 产品中心 | 报表技术漫谈 | OLAP技术漫谈 | 下载与服务 | 市场与合作 | 新闻中心 | 关于我们 |
| 数据微引擎与动态数据指令 | |||
|
报表的核心就是数据运算处理,所以对于一个报表工具来说,无论怎么强调数据运算处理能力都不为过。 传统报表工具在数据处理手段上相当单一,一般做法都是依赖于SQL语句或者存储过程,将需要的数据返回给报表系统,而报表系统能够做的仅仅是一些简单的四则运算,或通过固定函数取最大最小值等。 不同于传统工具,Max@X Analyser提供了两项技术创新:数据微引擎技术和数据库动态指令技术,结合Max@X Analyser脚本中的数据源当前行游标控制功能,设计者可以对当前所获得数据进行各种复杂的逻辑、四则、关联整合等运算,极大提高了设计者对报表数据的运算控制能力。本篇将对此类技术原理和应用场景进行逐一说明。 1、数据微引擎技术 数据微引擎技术,是指在报表获得实际数据之后,根据报表中某些变量或中间运算结果,动态地使用符合SQL 92标准的SQL语句,对当前已获得的数据进行关联、过滤等运算。 数据微引擎技术最为实用化的地方,在于其SQL语句是可以根据报表创建过程中产生的中间运算结果动态创建的。 让我们来看一个简单的例子,报表如下: ![]() 这是看似很简单的一份报表,以销售代表为索引,列出了各个销售代表当月的销售业绩,并且列出了对应销售代表业绩种,排名前三位的客户。如果尝试使用SQL语句用一个数据源直接获得报表所需的数据,几乎是不可能的。用存储过程或许可以做到这一点,但是不要忘记,这仅仅是一个简单的示例,如果在实际应用中,类似的计算列超过1个的话,存储过程的设计复杂度会呈指数形式上升。 如果尝试Max@X Analyser的数据微引擎技术的话,会发现解决这个问题非常简单。 首先,报表设计两个数据源,其一(假设命名为D1)获取所有的销售代表名称(取不重复值),其二(假 设命名为D2)获取所有的销售代表、销售客户、销售金额信息(中间不同记录之间可能存在销售代 表名称或者客户名称重复)。 其次,在报表中以列表方式分行显示数据源D1中的销售代表名称; 第三,使用数据微引擎,每一行显示同时进行数据运算,以当前行显示的销售代表名称为where条件,对数 据源D2进行过滤汇总,获得该销售代表的销售总额,并显示。 第四,使用数据微引擎,每一行显示同时进行数据运算,以当前行显示的销售代表名称为where条件,对数 据源D2进行过滤排序,获得该销售代表的对应客户中销量前三名的客户名称记录,并控制显示。 第五,设计完成。 2、数据库动态指令技术 动态数据库指令与数据微引擎技术非常类似,主要区别在于:前者操作对象为实际的物理数据库,后者则是报表已经获取的数据集。 适用场景为:报表中某些数据的获取方法在报表实际创建前无法确认,必需根据报表创建过程中产生的中间数据计算结果进行逻辑分析,然后根据规则向数据库请求对应的数据。看这样一张报表: 样式要求: ![]() 报表要求: 1、数据筛选条件: 统计区域:<全国/北京/山东……> 文化程度:<全部/小学/初中/……> 性别:<全部/男/女> 年龄段:<全部/16岁以下/16岁~18岁/19岁~30岁/31岁~40岁/41岁~50岁/51岁~60岁/60岁以上> 2、报表创建条件: 由用户在创建报表前选择统计分行规则(选择行属性内容),行属性分类包括:审批地区/受理地/户口 所在地/前往国或地区/申请原因类别/年龄段/文化程度。 难点分析: 报表的难点不在于常规的设计制作,而在于统计中行的分类方式是可变的:浏览者可以随意在年龄段、审批 地区、受理地等内容上进行选择,报表按照用户选择进行分行统计。比如,用户选择“年龄段”统计,则报 表中每行统计的是不同年龄段的数据;当用户选择为“受理地”时,每行统计的是不同受理地的数据。用户 做出不同的选择,报表中<行属性分类>标识处的数据内容就会发生相应的变化,同时统计数据方法也会发 生根本的改变。 Max@X Analyser的解决方案: 首先,为统计区域、受理地、文化程度、年龄段等分别创建字典数据源; 其次,建立行属性分类参数,当用户选择不同行属性(参数值变化)时,根据用户选择,使用脚本为显示行 属性分类的列指定相应的字段数据源。 第三,在报表数据行的创建前事件(OnBeforePrint)中,根据当前行的行属性分类值,动态创建SQL语句, 使用动态数据库指令机制,直接向数据库请求数据,并显示在相应空格内。 第四,设计完成。 通过以上两个例子,我们可以发现,报表并不仅仅是简单地把数据库中数据做一个提取,然后填充到对应的表格中了事。在实际的应用中,数据处理要求的复杂程度可能会超出我们的想像。所以,对于一个工具来说,数据动态获取的能力,以及数据获取后的再加工能力运算,是非常重要的功能部分。 报表中的数据处理方法不仅限于本篇所述,下一篇《多数据源集成与控制》中,介绍的是另一种方法和思路。 |
|||||||||||||||||||||||||||||||||||||||
| |
首页 | 联系我们 | 网站地图 | ||