1. 概述
1.1 预期效果
FineReport 支持定时填报,通过借助报表模板,定时实现数据的加载、汇总、填入库。
比如,每月定时统计各个公司销售业绩,这些数据均存在分公司的数据库中,利用定时填报功能,即可将各分工公司总业绩存储到总公司数据库中。
1.2 实现思路
1)制作报表,汇总统计各分公司每个月的销售业绩。
2)通过定时调度任务每月定时调用月报表,汇总各分公司的销售额,并保存至数据库中。
注:定时填报不支持内置校验功能。
1.3 方案对比
本文场景:A 数据库中的数据经过处理后定时同步到 B 数据库中。
对比项 | 当前方案 | 新方案 | ||||
---|---|---|---|---|---|---|
方案简介 | 本文方法,通过FineReport「定时调度+填报模板」实现 | 本文不做介绍 数据不需要进行复杂处理:使用 FineDataLink 的 数据同步 功能,定时同步数据
数据需要复杂处理:使用 FineDataLink 的 数据转换 功能,定时同步数据
注:若数据对实时性有要求,可使用 FineDataLink 数据管道 功能 | ||||
用户体验 | 用户需要配置繁琐的 FR填报属性,同时数据执行插入目标库前需要经过FR的单元格计算,导致数据插入性能低 | 使用 FDL 数据同步/数据转换批量采集数据,将「数据生产层-业务系统」和「数据目标层-数据仓库」完成连接,定时自动完成数据采集,数据采集效率大幅提升 |
2. 示例
2.1 制作月报表
制作一张报表用于统计数据,可以通过年份与月份参数查询订单金额跨年累计信息,如下图所示:
模板制作步骤请参见: 定时任务之月报与年报
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\Accumulative_4.cpt
点击下载模板:Accumulative_4.cpt
2.2 设置填报属性
用户需要实现的是,定期将统计后的数据自动保存至数据库,如将上图中年、月、总额、累计等自动保存到总部数据库。那么就必须先给模板设置填报属性。
编辑月报表模板,点击「模板>报表填报属性」,选择总部的数据库及表,把需要保存到总数据库中的数据绑定到对应列。
填报属性设置可参考文档:报表填报属性。
定时填报的模板就设置完了,就可以使用定时器调用该报表进行定时填报了。
2.3 添加任务
管理员登录数据决策系统,点击「管理系统>定时调度>任务管理」,点击「添加任务」,添加一个定时调度任务。如下图所示:
2.4 基本设置
1)「任务名称」设置为「定时自动填报」。
2)「默认用户组」无需设置。
如下图所示:
2.5 调度对象
1)对象类型选择「报表模板」,选择2.2节设置好填报属性的模板「定时自动填报.cpt」。
2)类型选择「填报」。
3)参数设置,点击「设置参数默认值」,出现模板参数。
参数 month 的值为=month(today());
参数 year 的值为=year(today());
点击「下一步」,如下图所示:
2.6 调度周期
执行频率选择「明细频率设置」,点击「添加」。
设置执行时间为「18时0分」,执行日为「每月」的「最后一天」,执行月为「全选」,点击「确定」,即可成功添加明细频率。
点击「下一步」。如下图所示:
2.7 文件处理
无需额外勾选处理方式,点击「保存」,如下图所示:
2.8 效果预览
由于该任务的执行频率是每月最后一天晚上 18 时执行一次,无法立刻看到任务效果。
为了立刻看到任务效果,可在「管理系统>定时调度>任务管理」界面找到该任务,选择「执行一次」。
执行后,打开数据库,可以看到上个月信息自动填报到了指定数据库里面(设计器:模板-报表填报属性里面指定的数据库)。