在Java中辅助报表工具展现json
JSON是半结构化数据,Java和报表工具只提供了简单解析的类库,很难进行深度计算。而使用集算器可降低JSON的计算难度。报表工具可将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器辅助报表工具的应用过程。
下面举例说明报表工具呈现JSON时常见的难题,以及集算器对应的解法。
JSON分组汇总
order.json存储着订单记录,现在要按时间段汇总每个月每个客户贡献的销售额,部分源数据如下:
集算器代码:
将JSON文件读为二维表,进行性条件查询,再进行分组汇总,其中argBegin、argEnd是报表参数。结果如下:
用列表呈现手机日志
文件cellphone.log是JSON格式的手机日志,其中general和ping字段是子文档,分别有一条记录,cap_main字段也是子文档,有多条记录,现在需要用列表呈现cap_main,每条记录附加general的mtmodel 、networktype字段,以及ping的ssid字段。
源数据如下:
集算器代码:
集算器读入JSON文件后,将保持其多层结构,并可用句号延多层结构访问字段。函数derive表示增加计算列。计算结果如下:
报表查询JSON多层子文档
jsonstr.json的runners字段是子文档,子文档有3个字段:horseId、ownerColours、trainer,其中trainer含有下级字段trainerId。报表需要根据文档序号展现对应子文档的horseId、ownerColours、trainerId字段。
源数据如下:
集算器代码:
读入JSON文件,按序号取出对应文档的runner字段(子文档),再从runner取出需要的字段,其中trainerId来自下级子文档。A3就是报表需要的数据,如下:
多层JSON分组表
Cells.json是个多层嵌套的json文件,报表需要将其展示为分组表,分组字段为name、type、image. “xlink:href”,明细字段分为3个部分:custom. Identifier、custom. Classifier、custom. Output,这3部分都是结构相同的子文档,但文档数不同。
源数据:
集算器代码:
集算器可将3种子文档合并在1个二维表中,用新字段ctype来区分,再将分组字段加入二维表,形成典型的“主子连接表”。合并后A2如下:
根据集算器的计算结果,报表很容易就可以设计出分组表。
多个子报表不同JSON
一张报表含有多个子报表,主报表和每个子报表使用不同的JSON文件,部分源数据如下:
对于Jasper、Birt等单源报表工具,需要用JAVA类将多源数据统一为单源,集算器只需书写简单脚本:
读入JSON并取出第1个字段,“.#1”表示第1个字段。给参数argFileName赋予不同的文件名,报表将会收到不同的数据集,如下:
连接txt和JSON
structure.txt是tab分割的结构化文本,json.txt是非结构化的JSON串,structure.txt的第2列和json.txt的部分文本存在外键关系。部分数据如下:
structure.txt
Json.txt
需要用报表呈现上述连接关系,期望表样如下:
集算器代码:
读入JSON文件,取出必要的字段和子文档形成二维表,然后新增计算列。A3如下:
之后读入本文文件,再和A3进行join运算,并取出需要的字段,形成最终结果A6,如下:
推荐阅读
-
Java报表工具技巧--在Style Report 中如何将报表服务部署到weblogic中
-
Java报表工具技巧--在Style Report 中如何将报表服务部署到weblogic中
-
java 报表工具技巧--在报表软件Style Report中创建多表头交叉表格
-
java 报表工具技巧--在报表软件Style Report中实现固定行分页分组合计报表
-
java 报表工具技巧--在报表软件Style Report中创建多表头交叉表格
-
java 报表工具技巧--在报表软件Style Report中实现固定行分页分组合计报表
-
在Java中辅助报表工具展现json
-
在Java中辅助报表工具展现json