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

在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环境中模拟请求,测试后端API的响应,从而快速验证数据处理逻辑是否正确,节省了大量手动测试的时间。 【描述】:“NULL” 虽然描述为空,但我们可以通过标题和标签来推断,这...

    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开源包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资源包01

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

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

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

    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开源包11

    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 的远程桌面软件,支持很多特性例如文件传输、...

    安卓图表报表相关-Android多维报表.zip

    2. **多维报表**:多维报表是一种用于展现复杂数据结构的工具,通常涉及多个维度和度量。在Android上实现多维报表,可能需要利用开源库如Cube.js、Pentaho Kettle或自定义的Java/Android解决方案。报表通常具有排序...

    Spire.Cloud.Excel.SDK_Java及WebAPI示例.zip

    总之,Spire.Cloud.Excel.SDK_Java及WebAPI示例为Java开发者提供了一套全面的工具,帮助他们在项目中实现高效、灵活的Excel文件处理功能,无论是本地操作还是云端交互,都能轻松应对。通过深入学习和实践这个SDK和...

    基于vue可视化拖拽编辑,页面生成工具

    2. **JSON定义界面**:描述中提到的“通过定义JSON直接生成UI界面”是指用户可以通过拖拽编辑器设计好界面后,工具会自动生成相应的JSON数据结构。这个JSON文件包含了所有元素的位置、样式和组件配置,可以方便地...

    ireport报表实例和文档

    iReport是Jaspersoft公司开发的一款开源报表设计工具,基于Java,与JavaServer Pages (JSP)、JavaServer Faces (JSF)等Web技术无缝集成。iReport支持多种数据源,包括关系型数据库、XML、JSON等,提供了丰富的图表...

Global site tag (gtag.js) - Google Analytics