变动间距时间序列报表的绘制
来源:互联网 发布:淘宝20万店铺数据下载 编辑:程序博客网 时间:2024/06/02 12:31
报表开发中除了一般的固定统计图,有时还需要根据不同条件的不同数据生成需要变动的统计图。像http://www.oschina.net/question/2274562_193376中提到的问题就是一个比较典型的此类需求。
这类问题的关键实际上是报表数据源的准备,如何能根据指定条件生成相应时间、段的报表数据源对生成统计图至关重要。使用SQL基本很难完成,要依靠存储过程,但存储过程由于其无法使用中间结果、对有序集合的支持不够等原因导致实现起来并不轻松。
而润乾集算报表在完成这类报表时则比较简单,这里以上述链接中的实际业务为例,给出集算报表的实现方案。
报表背景
源数据表sj数据如下:
表中包含两个字段,T为按分钟间隔的日期字段,V为对应时间的数值。
现报表需要根据如下情况绘制统计图:
输入指定统计时间点,并指定统计类型,如果按小时统计,则按5分钟间隔绘制;如果按天统计,则按2个小时间隔绘制;如果按周统计,则按1天间隔绘制。
这个需求通过开篇的分析可以看到,使用存储过程,甚至是Java自定义数据源都很麻烦。而集算报表本身内置了适合结构化计算的脚本,可以方便地写出数据准备的计算(相当于一种使用更简单的自定义数据集)。上述报表需求使用集算报表可以这样完成:
编写集算脚本
首先使用集算脚本编辑器,新建集算脚本,设置脚本参数:统计时间点。
编写脚本根据输入参数,为报表输出计算后结果集。
A1:连接数据源;
A2:空序列,用于保存统计使用的时间段信息;
A3-B5:判断是按小时、天还是周进行统计,并将相应的时间段信息存储在A2中;
A6:根据A2的时间段执行SQL汇总数据,生成带有时间和汇总结果的新序表;
A7:关闭数据库连接;
A8:为报表返回结果集。
编辑报表模板
使用集算报表编辑器,编辑报表模板,用于数据展现。首先新建参数,并设置默认值。
新建报表并设置集算器数据集,调用上述编辑好的脚本文件。
其中,dfx文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的dfx主目录的;参数dt和d_type为报表模板参数,d_date和type为脚本参数,事实上二者可以同名。
编辑报表表达式,直接使用集算脚本返回的结果集,绘制统计图。
统计图定义:
值得一提的是,集算报表支持HTML5和SVG统计图,适应移动应用的需要。
报表展现结果如下:
使用集算器脚本可以快速实现这类时间间隔变化的图表开发。外置的集算脚本具有可视化的编辑调试环境,编辑好的脚本还可以复用(被其他报表或程序调用)。不过,如果脚本已经调试好,且不需要复用的时候,要维护两个文件(集算脚本和报表模板)的一致性会比较麻烦,这时候直接使用集算报表的脚本数据集就比较简单了。
在脚本数据集中可以分步编写脚本完成计算任务,语法与集算器一致,还可以直接使用报表定义好的数据源和参数。本例使用脚本数据集可以这样完成:
1. 在数据集设置窗口中点击“增加”按钮,弹出数据集类型对话框,选择“脚本数据集”;
2. 在弹出的脚本数据集编辑窗口中编写脚本;
这里在脚本数据集中直接使用了报表中定义好参数dt和d_type,而且不必再管理数据库连接与关闭,比起单独的集算脚本更加简单、直接。
3. 报表模板和表达式与使用集算器数据集方式一致,不再赘述。
- 变动间距时间序列报表的绘制
- 两个时间的间距
- 设置jfreechart时间序列图时间轴间距和格式
- gnuplot 绘制时间序列图
- gnuplot 绘制时间序列图
- 使用 GDI+ 绘制有间距的文本
- oepngl绘制变动的多边形之glRotatef函数的利用
- FusionChart动态报表的绘制
- 利用 gnuplot 绘制时间序列图
- C#自定义一定与本地时间同步变动的nowTime
- js画一个随着系统时间变动的钟表
- matplotlib如何在绘制时间序列时跳过无数据的区间
- Python绘制时间序列数据的时序图、自相关图和偏自相关图
- 带渐进色统计图的报表绘制
- 从报表的绘制方式来谈谈:SQL报表,Cell报表和中国式报表.
- oracle 计算时间间距
- 润乾填报表的时间参数设置
- 润乾集算报表呈现输出之变动行高列宽
- cookies!=i<cookies.length&&null;
- 疯狂Java学习笔记(37)----------List集合
- 输出char[]数组
- 【ThinkingInJava】41、捕获转换
- CSU1626 Time Warp
- 变动间距时间序列报表的绘制
- 【ThinkingInJava】42、装饰器设计模式
- Raspberry Pi: How to set up WiFi
- 【ThinkingInJava】43、与动态代理混合的装饰器模式
- 主控芯片
- Spring 注解学习手札(一) 构建简单Web应用GOOD
- 是是是
- Android开发之JNI(一)——概述
- easyui列表中的/Date(1352649600000)/时间显示的问题