报表怎么总是没完没了?

报表做不完 · 老板一直催 · 客户总抱怨

生活总是这样无奈吗?

需求多变,报表总也做不完,累!
  • 很多技术力量投入报表开发,却还是疲于应付
  • 技术高手用来做报表,感觉很浪费
  • 缺少低成本高效率的应对方案

报表工具

  • 依靠人肉硬编码
  • 开发 成本
  • 人员要求高
  • ......

开源报表工具

  • 复杂格式报表做不了
  • 导出打印搞不定
  • 要靠人肉硬编码,费时费力
  • ......

商用报表工具

  • 报表工具花了不少钱
  • 开发效率怎么还这么差
  • 大牌敏捷BI系统也上过N套
  • 竟然无济于事

为什么呢 ?
无关报表工具 !

一个被报表开发折磨崩溃的程序员
亲,报表为什么会没完没了?
报表的业务稳定性天生很差,业务开展会不断刺激出新的查询统计需求
那就没有办法消灭没完没了的问题吗?
没有!报表多变常态,无法消除,只能适应;但可以利用工具实施低成本应对方法!
那为什么上了专业报表工具、敏捷BI还是搞不定?
报表工具只能搞定呈现环节,但消耗工作量更大却是数据准备环节,报表工具无能为力!!!
那么数据准备怎么办?
也要工具化!全方位简化报表开发后,才能做到低成本高效率应对!
嗯嗯,谢谢亲!
图解:报表工具只能搞定报表呈现环节,但搞不定数据准备环节

传统报表应用二层结构

  • 没有普适工具,编写维护困难
  • 专业编码,对人员要求高
  • 实现周期长,难以适应多变需求
  • 耦合性高,无法独立开发
  • 运维复杂,修改报表常常要重启应用

解决方案

报表数据准备环节独立出来,报表开发彻底工具化,实现高效率!

新型报表应用三层结构

开发人员广泛化

一般技术人员都能做了,成本低,响应快

报表模块独立化

原来混在数据库或JAVA里的数据准备工作独立开,单独维护,与应用程序和数据库解耦

报表开发工具化

报表模板与数据准备脚本,都可以使用高效工具实现

集算器实现数据准备层

引入数据准备层后报表应用的体系结构,分成了数据准备和报表呈现两层

  • 任意报表工具(润乾报表/BIRT/JasperReport/其他)
  • 标准接口,直接使用
  • 脚本解释执行,不停机热切换,降低运维复杂度
报表模板和计算脚本均置于应用系统之外,可独立团队开发,报表实施过程全面工具化

集算器 — 简易开发环境

支持分步计算的可视化的开发环境,适合一般技术人员使用

集算器 – 敏捷语法体系

示例某支股票最长连续涨了多少交易日?

SQL代码

1 SELECT max(连续日数)-1 FROM
2 from (select count(*) 连续日数
3 from (select sum(涨跌标志) over(order by 交易日) 不涨日数
4 from (select 交易日,
5 case when 收盘价>lag(收盘价) over(order by 交易日)
6 then 0 else 1 end 涨跌标志
7 from 股价表) )
8 group by 不涨日数)
思考:按照自然思维怎么做?

SPL代码

  A
1 =股价表.sort(交易日)
2 =0
3 =A1.max(A2=if(收盘价>收盘价[-1],A2+1,0))
语法体系更容易描述人的思路
数据模型不限制高效算法实现

集算器 – 完备计算类库

提供不依赖数据库的完备数据计算类库,让数据处理逻辑实现更简单

分组、循环

分组、循环

排序、过滤

排序、过滤

集合运算

集合运算

有序集合

有序集合

集算器 — 多样性数据源支持

  • RDB:Oracle,DB2,MS SQL,MySQL,PG,….
  • TXT/CSV,JSON/XML,EXCEL
  • Hadoop:HDFS,HIVE,HBASE,SPARK
  • MongoDB,REDIS,…
  • HTTP、ALI-OTS
  • ES,Kafka
  • ……
通过集算器,报表可以直接使用这些数据源混合计算,无需事先同库

解脱报表困扰的征途

引入报表工具

呈现工具化
解放报表呈现阶段人力

引入计算工具

数据计算工具化
解放数据准备阶段人力

独立报表模块

调整应用结构,梳理报表数据源,
实现报表模块与数据库及应用解耦

建设报表团队

模块独立后可建设培训独立于应用开发团队外的低成本报表队伍应对多变需求

完善沟通机制

建设报表知识库论坛。减少沟通中的误解,实现历史工作的复用

他们都在这样用

某石油公司

使用集算器将报表开发由29个工作日缩短至2.25个工作日

某大型银行

使用集算器后代码量由3500行降到80行,开发时间缩短了11倍

加拿大某大型保险公司

使用集算器从Vertica取数,计算后为BIRT提供数据支持,完全替代了硬编码实现过程

某国有银行

使用集算器代码量由4400行降到132行,开发时间由30人天缩短至6人天