`
datamachine
  • 浏览: 156841 次
社区版块
存档分类
最新评论

在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,如下:


 

  • 大小: 51.7 KB
  • 大小: 25.4 KB
  • 大小: 19 KB
  • 大小: 105.3 KB
  • 大小: 16.3 KB
  • 大小: 79.9 KB
  • 大小: 76.5 KB
  • 大小: 17.6 KB
  • 大小: 15.2 KB
  • 大小: 109.2 KB
  • 大小: 54 KB
  • 大小: 107.1 KB
  • 大小: 68 KB
  • 大小: 7.5 KB
  • 大小: 41.1 KB
  • 大小: 16.3 KB
  • 大小: 24.1 KB
  • 大小: 22 KB
  • 大小: 46.9 KB
  • 大小: 22.4 KB
  • 大小: 20 KB
2
1
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包101

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包6

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包9

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包5

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包8

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包10

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包1

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包3

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开发常用jar包

    json和java转化的辅助工具 flexjson.jar java到json串的转换 gson-1.3.jar java到json串的转换 ognl-2.6.11.jar OGNL表达式所需要的包,支持EL htmlparser.jar 强大的html解析器 jcommon-1.0.15.jar 使用...

    java开源包2

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包7

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    Java资源包01

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    精通JS脚本之ExtJS框架.part2.rar

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

    精通JS脚本之ExtJS框架.part1.rar

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

Global site tag (gtag.js) - Google Analytics