1 / 13

小数据量复杂分类求和设计

小数据量复杂分类求和设计. 陈霞光 / 2012-02-18 版本 v0.2. 适用场景 (1). 小数据量 统计目标数据五万条内可以良好支持 个人分析,单一表百万条数据,问题不大,未经实际论证。 自定义以哪些表中的哪些字段作为分类字段 ( 即跨表, 复合字段等等 ) ,当然也支持单表单字段。 自定义哪个字段用于值字段 分类规则可以配置 ( 需要 Spring 框架 ) 分类后别名自定义 且可以重复 自定义报表展示模板,横向,纵向单元格合并. 适用场景 (2). 支持自定义格式,自定义单元格合并 ( 包含条件格式,需要代码实现,暂未做成可以配置 )

Download Presentation

小数据量复杂分类求和设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 小数据量复杂分类求和设计 陈霞光/ 2012-02-18 版本 v0.2

  2. 适用场景(1) • 小数据量 • 统计目标数据五万条内可以良好支持 • 个人分析,单一表百万条数据,问题不大,未经实际论证。 • 自定义以哪些表中的哪些字段作为分类字段(即跨表, 复合字段等等),当然也支持单表单字段。 • 自定义哪个字段用于值字段 • 分类规则可以配置(需要Spring框架) • 分类后别名自定义 且可以重复 • 自定义报表展示模板,横向,纵向单元格合并

  3. 适用场景(2) • 支持自定义格式,自定义单元格合并(包含条件格式,需要代码实现,暂未做成可以配置) • 支持使用定义的jsp tag用于html页面输出 • 支持excel导出 • Excel导出与html页面输出公用url,excel导出仅仅需要加上参数format=excel

  4. 具体思路(宏观) Jsp页面输出(css, jsp tag) 分类好数据并求和 定义模板文件(合并单元格,样式等等) 生成中间层的表格数据模型(生成xml)转java对象 Excel导出 定制代码(可选)

  5. 具体思路(微观)一 多表多字段依赖OrginalComplexKeyRule和ClassifyStatisticsKey 分类好数据并求和 在spring中配置DefaultClassifyStatisticsKeyFactory 用于处理spring配置文件中配置的复杂规则 从数据库中取得要统计的目标数据集(可以多表) 默认求和统计器DefaultSumStatistics 针对你的报表逻辑定义SumStatisticsProperty实现 统计ok

  6. 具体思路(微观)二 定义模板文件(合并单元格,样式等等) 模板采用velocity填充 模板内容受sencloudReportTemplate.xsd约束 模板语法与velocity同步

  7. 具体思路(微观)三 定制代码(可选) 支持值 与样式定制 实现ISCReportCustom接口即可以,在vm模板中做相应配置

  8. 具体思路(微观)四 生成中间层的表格数据模型(生成xml)转java对象 Vm模板被数据填充后生成xml Xml转成Template对象,再转成Table对象或列表

  9. 具体思路(微观)五 Jsp页面输出 基于Table数据对象 自定义tag,用得不顺手可以自定迭代table对象 SCTableTag 用法可以参照任意用这种方式的报表jsp页面

  10. 具体思路(微观)六 Excel导出 同样基于Table数据对象 在BaseReportAction中已经支持通用能力,只需要在各自action中触发即可 与生成报表页面通用url,仅需要增加参数&format=excel

  11. 后续可以支持 • 分类编辑器,模板编辑器(现有velocity编辑器可以支持语法高亮自动补全等,但不支持图形化) • 性能改善,即支持大数据量。并行分类,并行求和。 • 更好的编码规范。改为provider和adapter模式。 • 更多的可以配置,与插件扩展式 • 更漂亮的页面控件

  12. 关于分类器配置的使用(一) • 分类器针对单表单字段分类的场景 • 比较简单。主要需要配置DefaultClassifyStatisticsKeyFactory类中的categoryProperty2Warper属性 • categoryProperty2Warper具体配法也很简单,改属性是一个map • Key为类别名称,value为ClassifyStatisticsKey的实例 • ClassifyStatisticsKey类是个关键点,是支持整个分类机制,以及快速分类的核心! • 这个类有三个属性,别名,key,注释 • 别名用于页面显示分类名称,比如“耗材” • Key是真正用于分类的key,不对界面呈现(当你上面名称相同的时候,key可以加一些不可见字符用于区分,比如\b) • 注释就是解释下这个分类,同时用于展现的时候的alt或title的属性值,以实现鼠标悬浮提示 • 注意这些实例在spring中尽量配置成scope=“prototype”,因为是有状态的,所以不能单例,相应用这些分类器的服务类也要非单例

  13. 关于分类器配置的使用(二) • 分类器针对单表多字段分类的场景 • 稍复杂。直接看app-report-config.xml注释

More Related