润乾集算报表非常规统计之固定分组

上传人:xzh****18 文档编号:44554032 上传时间:2018-06-14 格式:PDF 页数:8 大小:876.33KB
返回 下载 相关 举报
润乾集算报表非常规统计之固定分组_第1页
第1页 / 共8页
润乾集算报表非常规统计之固定分组_第2页
第2页 / 共8页
润乾集算报表非常规统计之固定分组_第3页
第3页 / 共8页
润乾集算报表非常规统计之固定分组_第4页
第4页 / 共8页
润乾集算报表非常规统计之固定分组_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《润乾集算报表非常规统计之固定分组》由会员分享,可在线阅读,更多相关《润乾集算报表非常规统计之固定分组(8页珍藏版)》请在金锄头文库上搜索。

1、润乾集算报表非常规统润乾集算报表非常规统计之计之固定分组固定分组 报表开发中,经常会碰到一些需要进行非常规统计的报表,固定分组、可重复分组、组 内排序,还包括跨行组计算的报表,甚至有些报表本身无数据来源、以及需要对数据源再计算。这些报表本身具备一定的特殊性,使用常规方法往往难于实现。 而集算报表在完成这类特殊统计报表时则比较简单, 这里来看下使用集算报表完成固定分组报表的实现过程。 所谓固定分组报表是指分组没有规律, 可能是分组范围没有规律, 也可能分组顺序没有 规律,需要报表开发人员事先固定分组的报表。常见的固定分组报表一般有三类:分段固定报表、固定次序分组报表、多层固定次序分组报表。 分段

2、固定分段固定报表报表 这类报表的特点是分段的区间并未在数据库中存储需要根据相应字段(如年龄、日期)计算,并且每个分段可能会发生变化(如每年节假日所在日期可能不同) ,经常由用户随意 指定。如:统计 20-30 岁,30-40 岁,40-50 岁各年龄段的用户数量;每年节假日(春节、端午节、国庆节)期间公路铁路承载的旅客统计。 更为特殊的情况下是对段界的要求,有的分段包含段界,有的分段不包含,这样看似特殊的情况可能伴随用户的指定时有发生。 下面通过实例说明,报表样式如下: 该报表是根据订单表统计各(预置)时间段内,各地区的订单数量、订单金额汇总。其中各 时间段范围为: 【1996 年圣诞前:da

3、te 1998-5-1】 这里出现了上文提到的段界包含问题, 起始和结束两段不包含段界日期, 而中间的各个分段 则包含。 在润乾报表中,其提供的 ds.plot()函数可以进行按段分组,而且可以通过该函数的参数 控制是否包含边界, 对于分组较少并且边界包含规律的分组报表尤其适用。 但对于这类段界 包含无规律的报表则无法实现。 润乾报表本身功能已足够强大, 但仍然无法满足需求, 其他报表工具实现起来将更加复杂,甚至无法实现。但在集算报表中,这类需求可以得到很好解决。使用集算报表可以通过 如下步骤实现。 编写编写集算脚本集算脚本 使用集算集算脚本脚本编辑器编辑器编写集算脚本,这里使用系统默认数据源

4、 demo 设置脚本参数(包括默认值,用于脚本调试) 其 中arg1值 : ?=“1996-12-25“ count(订购日期):订单数量,sum(单价*数量):订单金 额) 5 =arg2.array() 6 =A5.(A4(#).derive(A5.:区间).conj() 7 result A6 A1-A2:连接数据源后,通过 sql 完成取数 A3:按照指定的日期端参数,根据订购日期进行分组,分组结果如下 A4:汇总每个分段中的订单数据 A6:增加字段显示时间段名称 A7:为报表返回结果集 编辑编辑报表模板报表模板 使用集算报表集算报表编辑器编辑器,设置数据源,用于报表预览 设置参数,并

5、设置默认值 新建报表模板并设置集算器数据集,调用上述编辑好的脚本文件 其中,dfx 文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的 dfx 主目录的;参数 arg1 和 arg2 为脚本参数,param1 和 param2 为报表参数,实际使 用中二者可以同名。 设置报表模板表达式,完成报表制作 可以看到, 使用集算器脚本可以快速完成这类特殊的分组报表。 而且外置的集算脚本具有可视化的编辑调试环境,编辑好的脚本还可以复用(被其他报表或程序调用) 。不过,如 果脚本已经调试好,而且不需要复用的时候,要维护两个文件(集算脚本和报表模板)的一致性会比较麻烦,这时候直接使用集算

6、报表的脚本数据集就比较简单了。 在脚本数据集中可以分步编写脚本完成计算任务, 语法与集算器一致, 还可以直接使用 报表定义好的数据源和参数。以上述第二个报表需求为例,使用脚本数据集可以这样完成: 1. 在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集” 2. 在弹出的脚本数据集编辑窗口中编写脚本 这里可以看到, 在脚本数据集中直接使用了报表中定义好的数据源 demo, 以及参数 param1、param2,比起单独的集算脚本更加简单、直接。 3. 报表模板和表达式与使用集算器数据集方式一致,不再赘述。 除了按段分组报表,固定分组报表还包括固定顺序或多层固定顺序分组报表

7、。下面分别 来看一下实现过程,基于实现步骤与上述例子雷同,这里只展示主要实现步骤。 固定固定次序次序分组报表分组报表 这类报表的特点是用户要求分组次序固定,而数据库中并未存储相应的分组字段。如: 要统计长三角地区、 珠三角地区以及环首都经济圈内客户的订单情况。 数据库客户表中只有城市(如:北京、上海、石家庄)和地区(如:华北、东北、华南)字段,如果单纯为该报 表在数据库里增加另外一个地区字段显然是不值得的,所以任务自然落到报表端了。 下面通过一个实例来说明使用集算器辅助实现这类报表的过程,报表样式如下: 要求:要求: 1、 根据源数据中的城市分区分组汇总某年的订单数据,其中: 环首都经济圈包括

8、:北京,天津,张家口,承德,保定,廊坊,唐山,秦皇岛,衡水,沧州,石家庄 长三角地区包括: 上海,南京,苏州,无锡,常州,镇江,南通,扬州,泰州,杭州,宁波,湖州,嘉兴,绍兴,舟山,台州 珠三角地区包括:广州,深圳,珠海,佛山,江门,东莞,中山,惠州,肇庆 其他城市列为其他地区; 2、报表显示的地区顺序固定,即上图所示顺序显示,这里显然无法通过按字母顺序升降来 排序。 该类分组报表使用润乾报表实现,主要通过 ds.overlap()函数,报表模板及其表达式如 下: 其中,A2 的表达式为: =ds1.overlap(true,城市 in list(“北京“,“天津“,“张家口“,“承德“,“保

9、定“,“廊坊“,“唐山“,“秦皇岛“,“ 衡水“,“沧州“,“石家庄“),“环首都经济圈“,城市 in list(“上海“,“南京“,“苏州“,“无锡“,“常州“,“镇江“,“南通“,“扬州“,“泰州“,“杭州“,“宁波“,“湖州“,“嘉兴“,“绍兴“,“舟山“,“台州“),“金三角“,城市 in list(“广州“,“深圳“,“珠海“,“佛山“,“江门“,“东莞“,“中山“,“惠州“,“肇庆“),“珠三角“,“其他“) 这里可以看到 ds.overlap()函数的强大,对于固定的分组以及分组下成员较少的情况尤 其适用。 但当分组或分组成员过多时, 继续使用该函数的可读性就太差了, 难于维护;

10、 此外,本例中看到的是一层分组,如果要实现多层固定次序分组报表,ds.overlap()函数则无法直接 实现。这类报表在集算报表中可以这样完成。 集算脚本集算脚本 A B 1 =connect(“demo“) 2 =A1.query(“SELECT 客户.城市,订单明细.数量,订单明细. 单价,订单明 细.折扣 FROM 客户,订 单,订单明细 WHERE 客户.客户 ID = 订单.客户 ID AND 订单.订单 ID=订单明细.订单 ID and year(订购日期)=?“,year) 3 北京,天津,张家口,承德,保定,廊坊,唐山,秦皇岛,衡水,沧 州,石家庄 环首都经济圈 4 上海,南

11、京,苏州,无锡,常州,镇江,南通,扬州,泰州,杭州,宁波,湖州,嘉兴,绍兴,舟山,台州 长三角 5 广州,深圳,珠海,佛山,江门,东莞,中山,惠州,肇庆 珠三角 6 =A3:A5 =B3:B5|“其他“ 7 =A2.derive(:地区) /增加地区字段 8 A7.run(B6(ifn(A6.pselect(.pos(A7.城市),4):地区) /根据城市判断所属地区 9 =A7.aligna(B6,地区) /按照地区对位分组 10 =A9.new(B6(#):地区,.sum(单价*数量):销售额,.sum(折 扣*数量*单价):折扣金额) /计算分组汇总值 11 result A10 /为报

12、表返回结果集 报表报表模板模板 通过在集算脚本中完成指定地区的分组汇总运算, 在报表模板中只简单进行数据呈现, 非常简单。 多层固定次序多层固定次序分组报表分组报表 再修改一下上例的报表需求,要求按地区和城市分组,且地区和城市的展现顺序固定,如下顺序(没有则不显示) : 环首都经济圈包括:北京,天津,张家口,承德,保定,廊坊,唐山,秦皇岛,衡水,沧州,石家庄 长三角地区包括: 上海,南京,苏州,无锡,常州,镇江,南通,扬州,泰州,杭州,宁波,湖州,嘉兴,绍兴,舟山,台州 珠三角地区包括:广州,深圳,珠海,佛山,江门,东莞,中山,惠州,肇庆 报表样式如下: 当出现多层固定分组时,使用润乾报表的

13、ds.overlap()函数就无法实现了,但在集算报表中 仍然可以很好满足。 集算脚本集算脚本 A B 1 =connect(“demo“) 2 =A1.query(“SELECT 客户.城市,订单明细.数量,订 单明细.单价,订单明细.折扣 FROM 客户,订单, 订单明细 WHERE 客户.客户 ID = 订单.客户 ID AND 订单.订单 ID=订单明细.订单 ID and year(订购日期)=?“,year) 3 北京,天津,张家口,承德,保定,廊坊,唐山,秦皇岛,衡水,沧州,石家庄 环首都经济圈 4 上海,南京,苏州,无锡,常州,镇江,南通,扬州,泰州, 杭州,宁波,湖州,嘉兴,绍兴,舟山,台州 长三角 5 广州,深圳,珠海,佛山,江门,东莞,中山,惠州,肇庆 珠三角 6 =A3:A5 =B3:B5 7 =A2.derive(:地区) /增加地区字段 8 A7.run(B6(A6.pselect(.pos(A7.城市):地区) /根据城市判断所属地区 9 =A7.aligna(A3|A4|A5,城市).conj() /按城市和地区顺序排序 10 result A9 /为报表返回结果集 报表报表模板模板

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 统计图表

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号