报告分析工具创建完美的分析报告

目录


前言

本书涵盖的内容
这本书需要什么
这本书是给谁的
约定
读者反馈
客户支持
下载示例代码
下载本书的彩色图像
勘误
海盗行为
问题

1. Pentaho报告简介

介绍Pentaho报告
引入Pentaho报告工具
用户类型和所需知识
技术优势
商业友好的开源许可证
Pentaho Reporting的典型用途
运营报告
商业智能报告
财务报告
生产报告
Pentaho报告历史记录
功能概述
先进的报告算法
大量可用数据源
多种输出格式
像素精确的丰富格式
嵌入式图表
报告参数化
公式和样式表达
子报表
交叉表报告
互动报告
丰富的创作工具
报告服务器
用于生成报告的Java API
可扩展性
Pentaho报告网站
Pentaho Reporting架构
报表引擎的库
报告引擎核心
报表引擎扩展
摘要

2报表设计器入门

您的环境先决条件
设置Pentaho报表设计器
SamplaData模式
用户界面介绍
菜单和工具栏
报告元素调色板
报告画布选项卡
报告浏览器
元素属性
留言内容
使用向导创建第一个报告
引入报告设计向导
定义外观
定义数据源和查询
定义布局
格式化字段
预览报告
保存并打开报告
摘要

3.报告SDK入门

获取Pentaho Reporting SDK
Pentaho Reporting SDK的剖析
使用随附的Eclipse项目
介绍所包含的示例
使用Pentaho Reporting和Maven创建Web应用程序
您的环境先决条件
用Java创建Web应用程序
使用Apache Maven创建Java Web应用程序
创建Java Web应用程序的首页
在Web应用程序中包含Pentaho报告引擎
添加Pentaho存储库
添加Pentaho依赖项
在Web应用程序中显示现有的Pentaho报告
包括现有的Pentaho报告
包括SampleData模式
更新PentahoServlet
预览Pentaho报告
摘要

4.使用报表设计器创建报表

创建一个Pentaho报告
创建一个新的Pentaho报告
在Pentaho报表中创建数据源
向Pentaho报告添加详细信息
预览并保存Pentaho报告
自定义Pentaho报告
自定义字体
自定义报告标题
添加细节标题并自定义细节
自定义页面页脚
分组细节
添加图表
预览不同格式的Pentaho报告
训练自己学习更快
摘要

5.报表设计器中的设计和布局

报表设计器用户界面组件
报表资源管理器中的“结构”选项卡
报表元素属性
主报告和报告波段属性
共同特性
大小和位置属性
字体,文本和文本间距属性
字体属性
文字属性
文字间距属性
对象属性
链接属性
Excel属性
页面行为属性
填充属性
边框属性
属性的共同属性
查询元数据属性
向导属性
HTML属性
属性中的Excel属性
HTML事件,PDF事件和Swing事件属性
HTML事件属性
PDF事件属性
摇摆事件属性
主报表属性
大小和位置属性
文字属性
页面行为属性
查询属性
属性选项卡中的通用属性
向导属性
Excel属性
先进的属性
Pentaho属性
页面页眉和页面页脚属性
报表页眉和报表页脚属性
组页眉和组页脚属性
详细的身体特性
水印属性
报告要素
共同特性
大小和位置属性
字体属性
文字和文字间距属性
旋转特性
对象属性
链接属性
Excel属性
页面行为属性
填充和边框属性
属性的共同属性
查询元数据属性
向导属性
HTML属性
属性中的Excel属性
HTML事件,pdf事件,Swing事件属性
标签和讯息
领域和资源
图像和像场
垂直线,水平线,矩形和日食
调查规模
图表
简单条形码
Bar-sparkline,line-sparkline和pie-sparkline

子报表
目录和索引
隐藏和显示乐队
报表设计器中的视觉布局
网格
指导方针
附加视觉指示器
移动和对齐单个元素
对齐元素组
杂项布局功能
Pentaho Report Designer快捷键
不同输出格式的注意事项
电池输出
分页
限制为丰富的图形和图表
摘要

6.配置JDBC和其他数据源

数据源介绍
报表浏览器中的数据集
JDBC数据源
添加或编辑JDBC连接
关于JNDI访问
添加或编辑查询
元数据数据源
MongoDB数据源
Pentaho数据集成数据源
OLAP数据源
五角星分析
OLAP4J
Pentaho分析-自定义
XML数据源
表数据源
先进的数据源
可编写脚本
外部
序列发生器
OpenERP数据访问
Pentaho社区数据访问数据源
摘要

7.在报告中包括图形和图表

在报告中包括静态图像
在报告中包含动态图像
在报告中包括图表
数据集类型
类别数据集
共同特性
系列属性
组属性
可选属性
饼图数据集
XY系列和XYZ系列数据集
时间序列数据集
温度计数据集
样式和布局通用属性
必需的属性
标题属性
一般性质
图例属性
脚本属性
条形图
条形图示例
折线图
折线图示例
面积图
面积图示例
饼形图
饼图示例
乘法图
乘法图示例
条形图
条形图示例
环图
环形图示例
气泡图
气泡图示例
散点图
散点图示例
XY条形图,XY折线图和XY面积图
XY条形图,XY折线图和XY面积图示例
扩展XY折线图
扩展XY折线图示例
瀑布图
瀑布图示例
雷达图
雷达图示例
XY区域折线图
温度计表
温度计图示例
在报告中包含迷你图
摘要

8.参数化,函数,变量和公式

报告参数化
使用报告参数
可用的报告参数类型
创建参数
使用参数创建报告
函数和表达式
报表设计器中的函数和表达式
创建和使用功能
功能实例
创建和使用表达式
表达的例子
可用功能类型
常用功能
报告功能
摘要功能
运行功能
进阶功能
图表数据和值数据功能
影像功能
脚本功能
目录功能
环境变量
使用公式
建立公式
公式语法
公式数据类型
公式运算符
可用的公式类别
日期或时间公式
数据库公式
信息公式
逻辑公式
数学公式
取整公式
文字公式
用户定义的公式
摘要

9.国际化和本地化

国际化和本地化
使用资源本地化元素
本地化资源
管理资源包
测试本地化
报告本地化的示例
摘要

10.子报表和交叉表

Pentaho报表设计器中的子报表
子报表示例
其他子报表示例
目录和索引元素
索引示例
Pentaho Report Designer中的交叉表
交叉表示例
摘要

11. PRPT格式和用于构建它的Java API

了解序列化的报告格式
.prpt捆绑文件的剖析
datadefintion.xml文件和datasources文件夹
参量
资料来源参考
函数和表达式
数据源文件夹
layout.xml文件
组和详细信息带层次结构
报告要素
settings.xml文件
styles.xml文件
手动创建.prpt捆绑文件
使用Pentaho Reporting Java API构建报告
添加数据源
定义参数
包括函数和表达式
定义报告布局
共同报告带
组带层次
向报告添加元素
添加标签元素
添加图表元素
开发一个Pentaho报告的例子
摘要

12.使用数据源进行开发

Pentaho报表引擎数据API
DataFactory接口
TableModel接口
DataFactory序列化
附加数据源元数据
在整个报告中访问数据
现有的DataFactory实现
TableDataFactory
TableDataFactory示例
SQLReportDataFactory
StaticConnectionProvider
DriverConnectionProvider
JndiConnectionProvider
使用SQLReportDataFactory
SQLReportDataFactory示例
XPathDataFactory
XPathDataFactory示例
HQLDataFactory
静态会话提供者
DefaultSessionProvider
PmdDataFactory
XMI文件
域ID
IPmdConnectionProvider
PmdDataFactory示例
KettleDataFactory
KettleDataFactory示例
BandedMDXDataFactory和DenormalizedMDXDataFactory
BandedMDXDataFactory
非规范化MDXDataFactory
BandedMDXDataFactory示例
CompoundDataFactory
ScriptableDataFactory
摘要

13.使用Java的国际化,子报表和交叉表

使用Java进行国际化和本地化
使用Java进行本地化的资源
使用Java测试本地化
使用Java进行报告本地化的示例
使用Java的子报表
使用Java的子报表
使用Java的子报表的示例
使用Java的交叉表
使用Java的交叉表
使用Java的交叉表的示例
摘要

14.构建交互式报告

HTML交互式报告
处理报告HTML DOM
包括外部CSS或JavaScript资源
使用Java的交互式报告示例
从Pentaho报表中打开静态URL
从Pentaho报表中打开动态URL
处理Pentaho报告的内容
主数据/明细报告交互的示例
摘要

15.在Pentaho Business Analytics Platform中使用报告

介绍Pentaho业务分析平台
安装业务分析平台
业务分析平台的基础
在业务分析平台中发布报告
手动上传报告
使用Pentaho报告设计器发布报告
管理数据源
预览报告
从浏览文件页面预览报告
使用直接链接预览报告
捆绑的报告预览
管理许可证和时间表
使用Pentaho报表创建仪表板
社区仪表板编辑器基础
报告组成部分介绍
PRPT组件
执行Prpt组件
计划PRPT组件
CDE仪表板示例
摘要

16.在Pentaho数据集成中使用报告

介绍Pentaho数据集成
安装Pentaho数据集成
Pentaho数据集成的基础
工作与转型
步骤和条目
数据库连接
存储和重复使用
Spoon客户端介绍
Pentaho报告输出步骤
介绍平底锅和厨房
使用Pentaho报告创建转换
使用Pan执行转换
摘要


17. Pentaho报告每晚构建和支持

Pentaho Report Designer每晚构建
建立项目的前提条件
克隆GitHub存储库
构建发布
安装和运行每夜构建
Pentaho Reporting SDK每晚构建
更新pom.xml文件
添加每晚的构建库
编译并运行项目
从社区获得帮助
提出问题并帮助他人
在线文件
提交错误并查看积压
贡献代码
企业支持
成为专家后该怎么办
摘要

前言

要求您使用基于Web的解决方案或自定义Java项目在几天(或更少的时间)内以最新的技术以各种不同的格式开发具有吸引力的报告的次数,如果是这样,本书将使您能够使用Pentaho套件的专用工具Pentaho Reporting实现该目标。

本书是针对Java开发人员和信息技术人员的有关开源报告工具的权威指南,可让您基于广泛的范围创建PDF,Excel,HTML,文本,RTF,XML和CSV数据的像素完美报告一系列数据源,使用可视化设计环境和SDK将Pentaho Reporting Engine嵌入到您的应用程序中。

该书是在Pentaho版本8即将正式发布时编写的,并且主要基于该版本。有关功能,技巧和窍门以及最佳做法的描述是通过示例学习的方法完成的。为了更好地指导您完成不同的主题和学习路径的定义,本书分为四个主要部分:
Pentaho报告的简介和基础
报表设计器的核心概念和高级功能
关于报表SDK的全部
其他Pentaho报告主题

本书涵盖的内容
第1章,Pentaho Reporting简介,介绍Pentaho Reporting的典型用法,历史和起源,以及Pentaho Reporting提供的报告功能的更详细概述。
第2章“ Report Designer入门”重点介绍Pentaho Reporting的启动和运行。 首先要建立一个用于生成和嵌入报表的环境。 从那里,读者将逐步使用向导创建报告,并完成本章,学习如何将报告保存到文件系统中。

第3章“ Reporting SDK入门”是关于Pentaho Reporting SDK的。读者将逐步了解如何将现有报告嵌入通用Java应用程序中。
第4章“使用报表设计器创建报表”更进一步,介绍了从头开始创建报表而不是使用向导的最常用功能。将逐步详细介绍核心概念,例如自定义报告,将其保存在Pentaho存储库中以及预览内容。
第5章,报表设计器中的设计和布局,深入研究了Pentaho报表设计器中与设计和布局有关的所有概念和功能。读者将使用Pentaho Report Designer深入探讨报告设计和布局的来龙去脉。
第6章,配置JDBC和其他数据源,教您如何使用Pentaho Reporting能够使用的所有方式配置数据源连接。数据源定义将使用Pentaho Reporting Designer显示。
第7章,在报告中包括图形和图表,显示了如何将图表和图形合并到Pentaho报表中。您将了解支持的不同类型的图表以及如何在Pentaho Report Designer中进行配置。本章还将帮助您用各种数据填充图表。
第8章“参数化,函数,变量和公式”从学习如何参数化报告开始。本章介绍了可在报表中使用的所有预定义函数和表达式。它将帮助读者了解Pentaho Reporting的公式功能,包括正确的语法和可用的公式方法。

第9章“国际化和本地化”详细介绍了报表的国际化和本地化。

第10章“子报表和交叉表”涵盖了从头构建子报表和交叉表的一些示例,并探讨了Pentaho Reporting提供的功能。我们将构建一个多页子报表,该子报表演示了可用于管理页面标题的粘滞标记的用法,并且还将构建一个带有摘要图表的子报表。
第11章,PRPT格式和构建它的Java API讲授Pentaho Reporting的PRPT捆绑格式,以及Pentaho Reporting Java API的详细信息。本章重点介绍代表Pentaho报告的PRPT文件的组成以及如何使用Java API构建报告。
第12章,使用数据源进行开发,展示了将数据加载到Pentaho Reporting Engine中的各种方法,并深入研究了Pentaho Reporting Engine如何与这些数据源交互以呈现报告。
第13章“使用Java进行国际化,子报表和交叉表”涵盖了报表参数化的详细信息。您还将学习动态呈现报表的各种方法,包括从Java角度学习所有可用的函数和表达式。
第14章,构建交互式报告,教您在报告中启用交互式功能。您还可以修改报告定义以生成超链接事件和许多不同的HTML JavaScript事件。您将学习如何在服务器上呈现HTML报表,以及如何在HTML呈现的报表中包含外部脚本文件。
第15章,在Pentaho Business Analytics Platform中使用报表,显示Pentaho Business Analytics Platform的基础知识以及使用存储在存储库中或通过仪表板的Pentaho Reports的最佳实践。
第16章,在Pentaho Data Integration中使用报表,介绍了如何在Pentaho套件中使用已开发的Pentaho报表,尤其是与Pentaho Data Integration(Kettle)一起使用来开发管理Pentaho报表的作业/转换。
第17章“ Pentaho Reporting每晚构建和支持”涵盖了有用,简短和高级的Pentaho Reporting主题。

这本书需要什么

Pentaho Reporting工具是跨平台的应用程序,将在Linux,Windows,macOS和其他Java支持的环境中运行。 报告引擎与JDK的早期版本向后兼容,但始终建议使用最新版本。 对于Pentaho 8,建议使用JDK 1.8版。
本书中包含的所有示例均使用具有4 GB RAM和Intel i7处理器的Ubuntu操作系统v16.04 LTS开发。 开发环境由Java JVM 1.8.0_131,Apache Maven 3.3.9,Git版本2.7.4组成。 对于您运行示例,此配置不是必需的,但可以共享该配置作为成功运行示例的参考和建议。
如果您是信息技术人员,并且不想涵盖开发任务,则无需在笔记本电脑中安装Apache Maven和Git。

这本书是给谁的

本书是为两种类型的专业人员和学生编写的:具有数据库基础知识的信息技术人员和具有中等资历的Java开发人员。 开发人员将有兴趣发现如何将报告嵌入第三方Java应用程序中。

Pentaho报告简介

Pentaho Reporting是一个易于使用的开源轻量级Java项目套件,其目的是为了生成报告。 在本书中,您将发现将Pentaho Reporting嵌入Java项目或将其用作独立的报告平台非常容易。 Pentaho Reporting的开放源代码许可证-GNU较小通用公共许可证(LGPL)-使开发人员可以自由地将Pentaho Reporting嵌入到其开放源代码和专有应用程序中。 一个活跃的社区参与Pentaho Reporting的开发和使用,回答论坛问题,修复错误以及实现新功能。 尽管有许多专有的报告选项可用,但没有一个选项可以提供Pentaho Reporting为用户提供的开放性和灵活性。

与大多数成功的开源项目一样,Pentaho Reporting拥有良好的记录和丰富的功能。 大部分历史记录已在开放的论坛和电子邮件主题中进行了记录,人们仍然可以浏览和收集想法。 多年来,Pentaho Reporting Engine及其工具套件,例如Report Designer,Reporting Engine和Reporting SDK,从业余爱好开始发展成为企业报告套件,在无数公司中被用作关键组件。 ,基于教育,政府和社区的信息技术解决方案。

在大多数商业软件应用程序中,报告组件是必需的,无论是用于汇总数据,生成大量自定义文档,还是仅仅是为了更轻松地打印在各种输出格式中有用的信息,报告组件都是必需的。 Pentaho Reporting具有包括PDF,Microsoft Excel,HTML,Text,XML,CSV和RTF报告生成在内的一整套功能,以及诸如子报告和交叉表之类的高级报告功能,可以快速解决最简单的问题,以及 解决设计,生成和部署报告时的更高级挑战。

在本章中继续阅读,以了解有关Pentaho Reporting的更多信息,其典型用途,历史和起源,以及对Pentaho Reporting提供的报告功能的更详细的概述。

在本章中,您将涵盖以下主题:
Pentaho报告简介
Pentaho Reporting的典型用途
Pentaho报告历史记录
Pentaho Reporting架构

介绍Pentaho报告

正如介绍的那样,Pentaho Reporting是一个易于使用的开源轻量级Java项目套件,旨在使报告开发人员能够以PDF,Microsoft Excel,HTML,Text格式创建其数据的像素完美报告。 ,RTF,XML和CSV格式。 这些由计算机生成的报告可以轻松地将各种来源的数据精炼成人类可读的格式,并且可以通过集成的Web查看器进行访问,保存为文件并通过电子邮件发送给预定义的收件人列表。 作为Pentaho数据集成转换的一部分,还可以生成报告,以根据更复杂的业务规则(http://community.pentaho.com/projects/reporting)分发生成的文件。

Pentaho数据集成转换用于描述流程中的数据流,例如从源中读取数据,转换数据并将其加载到目标位置。 您将在第16章,在Pentaho Data Integration中使用报告中了解更多信息。

由于它提供了如此高的性能,消耗的内存以及相当低的内存,因此报表处理可以从小尺寸嵌入式方案变为大型企业报告方案。 Pentaho Reporting与Business Analytics Platform完美集成,可让您与同事和同事共享报告。
Pentaho Reporting样式非常灵活,它使报表设计者可以选择他们希望操纵整个用户界面的粒度,直到细节,例如单个字符的字体样式。 除此之外,您还可以在这些报告中添加自己的图像和徽标,并从各种布局,图表和表格中选择要应用的图像和徽标。

引入Pentaho报告工具

Pentaho Reporting可以定义为一组开源工具,并且可以描述为由以下各项组成:

报表设计器:这是一个桌面应用程序,提供设计,开发和测试环境,使知识工作者可以轻松创建简单和复杂的报表。该工具旨在供经验丰富的高级用户使用,他们对几种技术概念都不熟悉。

报告引擎:该引擎是JFreeReport项目的发展而来的,该项目是一个免费的Java类库,用于创建报告。该库可以使用
在客户端(例如报表设计器)和服务器端应用程序(例如Web应用程序)中。

Reporting SDK:这是一些资源的打包(引擎,一些文档以及将Pentaho Reporting Engine嵌入到您的应用程序中所需的所有库),以对所有开发人员,尤其是对所有Java开发人员提供有效的支持。
 在本书中,我们将详细研究Report Designer和Reporting SDK,并假设它们是开发人员和Report Designer的正确工具,可以在现实生活中使用Reporting Engine。

用户类型和所需知识

Pentaho Reporting的设计和开发旨在使报表设计人员的工作变得更轻松,同时对缩短的限制范围,并且可以开发复杂而丰富的报表。因此,开发人员(不一定是Java开发人员)可以 使用报表设计器,但具有数据库和技术概念的基本知识的信息技术人员也可以使用。

对于高级开发,尤其是使用Reporting SDK的开发,需要Java开发方面的技术技能,并且您必须熟悉将JAR导入到项目中并熟悉阅读代码中的内联注释以自行确定高级功能。

如果您是一位拥有数据库和技术概念的基础知识的信息技术人员,那么您可能会注意到的主题是致力于报表设计器的章节以及如何在Pentaho数据集成和Pentaho业务分析平台中使用报表。作为 Java开发人员,关于Reporting SDK的章节可能对您也很有趣。

技术优势

Pentaho Reporting提供以下独特的功能,这在竞争性嵌入式解决方案中是找不到的:
需要Java运行时环境,不一定需要JDK。即使您需要在开发环境中安装JDK,也不需要JDK运行嵌入Pentaho Reporting Engine的应用程序。仅需要Java运行时环境。
可能向后兼容。从理论上讲,Pentaho Reporting可以使用Java虚拟机的过时版本运行。 Pentaho强烈建议使用JRE 1.8.0,但是可以在较旧的JRE版本中使用报告引擎(几乎不需要集成)。
所有处理都在内存中完成。所有处理,计算和算法都经过设计和开发,只能在内存中运行,而无需使用临时文件,表或任何形式的内存大量使用。
低内存需求。即使使用128 MB内存可以显着提高报表处理速度,基于Pentaho Reporting的应用程序也只能运行64 MB内存。
动态加载库。 Pentaho Reporting Engine能够在运行时检测JAR库。通过添加新的JAR或删除现有的JAR,可以扩展引擎的功能或删除不必要的库,以减少应用程序的内存和磁盘空间使用量。
在运行时进行参数化。通过在运行时传递给Reporting Engine的参数,可以完全自定义所有报表元素,对于样式,功能和查询,我们可以说完全相同。
OpenFormula标准。 OpenFormula是一个开放标准,将在下一章中介绍。您将能够创建自己的自定义公式或使用已知标准自定义现有公式。
轻松的资源管理。由于使用了OpenDocument格式(ODF),Pentaho Reporting Engine可以将所有请求的资源(包括数据源连接信息,查询乃至图像之类的二进制资源)捆绑到常规文件中,从而简化了资源管理。

商业友好的开源许可证

Pentaho Reporting的一项非常吸引人的功能是其许可证。 Pentaho Reporting在GNU LGPL下免费提供。 如以下屏幕快照所示,此许可证允许其他开放源代码和专有项目嵌入Pentaho Reporting,而不必担心高昂的许可证费用或病毒性的开放源代码限制。 作为一个开源项目,开发人员还可以前所未有地访问该引擎以及Pentaho Reporting社区内的大量软件开发人员。 该社区包括开放讨论论坛和Internet中继聊天(IRC),以及必要时的商业支持和许可。

Pentaho Reporting的典型用途

由于许多不同的原因,业务用户需要以许多不同的形式访问信息。 Pentaho Reporting解决了以下典型的报告用法,以及本书将介绍的许多其他类型。

运营报告

运营报告是最常用的报告形式之一。当开发人员或IT组织决定直接从其操作数据源生成报告以进行详细的事务级别报告时,称为操作报告。在这种情况下,数据库旨在解决操作问题,通常包含支持关键业务功能的实时数据。 Pentaho Reporting的用户可以直接指向此数据源并开始生成报告。
运营报告的一些示例包括直接基于第三方软件供应商的数据库架构构建自定义报告。这些报告可能包括日常活动的摘要,或对特定项目或系统用户的详细视图。还可以根据内部自定义应用程序中的数据生成报告。这些报告通常基于SQL后端,但可以从平面日志文件或直接从内存Java对象生成。
Pentaho Reporting的参数化功能提供了一种强大的机制来呈现最新的自定义操作报告。借助交叉标签和交互式报告等功能,业务用户可以快速查看其运营数据并追溯到可能需要注意的操作系统。
但是,基于实时运行数据开发报表时存在局限性。开发人员需要注意确保操作系统中的查询不会影响常规操作的性能。占用大量CPU的查询可能会延迟事务的进行。同样,某些历史问题,例如状态转换或对特定信息字段(例如地址)的更改,传统上不会在操作模式设计中捕获。

商业智能报告

当您达到运营报告的极限时,下一个逻辑步骤就是将您的数据移入数据仓库。 此举通常被称为商业智能报告。 仅报告并不能提供进行此过渡的必要工具。 您将需要诸如Pentaho数据集成之类的提取,转换,加载(ETL)工具,以及诸如雪花模式之类的明智仓库设计。

雪花模式是多维数据库中表的逻辑排列,因此实体关系图类似于雪花形状。 多维数据库定义为“使用多维结构来组织数据并表达数据之间关系的关系模型的变体”。

这种类型的使用允许业务用户监视随时间的变化。通过预先计算聚合并定义为汇总报告而考虑的架构,它还有助于获得性能优势。直到最近,由于软件成本和专业知识有限,数据仓库和商业智能还仅限于大型企业。随着开放源代码工具的日益普及,许多中小型企业正在部署数据仓库,以获取针对其业务领域中关键问题的解决方案。数据仓库报告的常见示例包括将销售和库存数据合并到一个位置进行报告,或者将内部专有销售数据与可公开获得的市场趋势和分析相结合。
Pentaho Reporting的灵活数据源支持使您可以轻松地将报告合并到您的商业智能解决方案中。此外,借助Pentaho Reporting的速度和可伸缩性,您可以放心部署Pentaho Reporting,以确保报告将被高效执行。

与所有方法一样,此方法也有局限性。在传统的仓库中,数据通常每晚,每周或每月进行批处理。因此,业务用户很少能看到有关业务运营的最新报告。同样,在设计仓库时,提出正确的业务问题也很重要。不幸的是,即使不提前调查,也有可能建立数据仓库而仍然不能满足业务用户的需求。

财务报告

财务报告是一种非常特殊但很常见的报告形式,旨在为会计师,经理和商业投资者生成财务摘要。 属于此类别的标准报告包括资产负债表,损益表,保留收益表和现金流量表。 与商业智能或运营报告不同,法律要求这些报告中的许多,并围绕其内容和表示方式制定法规。 财务报告通常包括资产,负债,收入和支出的计算。
以下是显示此类报告的屏幕截图:

借助组摘要聚合之类的功能,Pentaho Reporting使开发人员可以轻松实现业务经理和所有者所需的自定义财务报告。
通常,此类数据以受控形式存在,无论是在专有系统(如QuickBooks或SAP)中,还是在安全数据库系统(如Oracle或MySQL)中。 由于此数据的敏感性,开发人员需要意识到谁可以访问报告,并且可能希望实现诸如审计日志记录之类的功能。

生产报告

Pentaho报告的另一种典型用法包括生产报告。 这种类型的报告包括诸如针对大量受众的自定义套用信函,发票或明信片之类的报告,以及自动邮件合并。 通常,批处理涉及这种报告形式。 但是,基于为个人生成的标准模板的自定义报告也可以归入此类别。

以下是呈现此类报告的屏幕截图:
Pentaho Reporting中有某些特定功能,例如动态合并来自数据源的图像,以及像素精确的格式设置,这在实现生产报告时会真正有用。

Pentaho报告历史记录
Pentaho Reporting最初是JFreeReport,它是一个基于Java的报告引擎和Swing小部件,早在2002年。JFreeChart的作者David Gilbert实施了JFreeReport的初始版本,以满足报告呈现的需求。启动该项目后不久,Thomas Morgner成为主要开发人员。他添加了关键功能,例如报表功能和XML报表定义,将JFreeReport启动到成功的开源Java项目中。

从一开始,Pentaho Reporting就是一个国际项目。 David位于英国赫特福德郡,Thomas位于德国法兰克福。来自世界各地的许多其他人为Pentaho Reporting提供了翻译和代码。

从2002年到2006年,Thomas继续将JFreeReport开发为具有企业价值的报告引擎。在担任顾问期间,Thomas添加了对多种输出的支持,包括Excel和RTF。在2006年初,Thomas和JFreeReport加入了开源商业智能公司Pentaho,JFreeReport正式成为Pentaho Reporting。此时,Thomas从Pentaho Reporting Engine和工具套件的专职顾问过渡到专职开发人员。

2006年1月,随着Pentaho Reporting的收购,Pentaho宣布了Pentaho Report设计向导的全面上市,该向导将指导企业用户使用一系列简单的指令来构建基于模板的复杂报表。 Pentaho的高级工程师Mike D'Amour是该向导的最初作者,该向导现已在许多Pentaho应用程序中使用。

Pentaho Reporting历史上的另一个重要里程碑是Pentaho Report Designer的推出。 2006年,Martin Schmid为社区贡献了Pentaho Report Designer的第一版。自推出以来,报表设计器就随报表引擎一起发展。

2007年,Pentaho与Sun的OpenOffice合作,为OpenOffice的数据库工具集提供了报告解决方案。该项目由Thomas Morgner领导,现在被称为Pentaho Reporting Flow Engine。尽管此引擎与本书中讨论的经典引擎共享了许多概念,但它是一个独立的项目,其功能与功能与Pentaho的经典报告项目截然不同。

从Pentaho商业智能平台1.6版开始,Pentaho Reporting还与Pentaho的Metadata Engine紧密集成,从而使可能没有SQL专业知识,报表中数据驱动格式的业务用户易于使用基于Web的即席报表。列级和行级数据安全性。 Pentaho报表设计器内部提供了相同的功能来进行查询和报表创建,从而使业务用户可以从基于模板的快速报表转换为完整的自定义报表。
今天,Pentaho Reporting绝对是Pentaho平台的核心部分,并且作为整个商业智能套件的官方和强大组件进行维护和增强。

功能概述

在对Pentaho Reporting 8中可用的各种功能的快速介绍中,您将获得有关Pentaho Reporting的工作方式以及它可以满足报告需求的内容的摘要。 本书后面的章节将更深入地介绍随后的主题。

先进的报告算法

报告算法是Pentaho Reporting的核心。 无论呈现哪种输出格式,此算法都可以管理整个报表的布局和呈现。 该算法可将报告模板和数据集实时组合在一起,以生成最终报告。 没有不必要的编译步骤。 所有其他Pentaho报告功能都可以在整个报告算法的上下文中进行描述。

该算法允许报表呈现页面页眉和页脚,报表页眉和页脚,组页眉和页脚以及明细栏。 报告算法多次遍历数据集以呈现报告。 在第一遍中,该算法执行计算并确定如何将数据分为几组,以及计算文本和图像的高度和宽度。 初次通过后,该算法将再次遍历数据集,以呈现输出。

大量可用数据源

Pentaho Reporting提供了许多数据源实现。最常用的实现包括JDBC和JNDI数据库连接,XML XPATH功能以及使用MDX和MongoDB NoSQL数据库支持的多维OLAP数据访问。
Java命名和目录接口(JNDI)是目录服务的Java API,允许Java软件客户端通过逻辑名发现和查找数据和对象,从而实现与配置和设置分离。在线分析处理(OLAP)是一种 多维表达式(MDX)是OLAP数据库的查询语言。与SQL非常相似,它是关系数据库的查询语言。

可用的其他数据源包括Pentaho数据集成数据源,Hibernate查询语言(HQL)数据源,Pentaho Metadata数据源,脚本数据源(在JavaScript,Python,TCL,Groovy和BeanShell中),简单的该表定义为行和列以及其他高级数据源(OpenERP数据访问,社区数据访问和序列生成器)的静态列表。
使用Pentaho的数据集成数据源,可以轻松地将Excel,日志或其他文件格式用作报表的输入,而无需编写任何代码。所有这些数据源都通过易于扩展的标准API与报表引擎进行交互。

以下屏幕截图显示了Pentaho Reporting中的可用数据源:
通过将Pentaho Reporting的数据源功能与Pentaho的数据集成引擎相结合,可以输入大多数已知的数据格式和系统。这包括将数据源合并到单个报告中。一个示例可能包括远程共享驱动器上的Microsoft Excel文件,以及来自HTTP服务器的纯文本日志文件。

像素精确的丰富格式

在Pentaho报表中定义的报表可以在像素级别指定应渲染文本或图像等对象的位置。 使用Pentaho Report Designer,可以轻松对齐需要保持对齐的字段和组项目。 尽管由于XML,CSV和纯文本等不同的格式类型而并非总是可能的,但三个主要的图形输出HTML,PDF和Excel努力使外观看起来尽可能相似。

丰富的格式包括TrueType系统字体选择,呈现几何形状和线条的能力以及在报表中包含图像和其他对象的能力。 通过类似于CSS的样式在幕后指定了这种丰富的格式,从而将格式与报告详细信息分开。 这使得修改和维护报告以及通过报告向导应用公司样式变得更加容易,如下图所示:

嵌入式图表

Pentaho Reporting Engine和工具套件可以轻松地将图表嵌入到报表中,这些报表最初是使用JFreeChart Engine开发的。 可用的图表类型很多,包括条形图,直方图,饼图和折线图,如下图所示:

报告参数化

Pentaho Reporting提供了易于使用的工具来对报告进行参数设置,从而允许用户指定范围和其他值以自定义报告的输出。 可以从硬编码值列表中选择参数值,也可以从查询中驱动参数值。 通过参数化,最终用户可以控制报表上显示的信息量。 以下屏幕快照是从Pentaho的商业智能服务器中输入参数的示例:

公式和样式表达

报表创建者可以使用OpenFormula标准定义自定义公式和样式表达式,以允许在报表中计算值和动态格式,例如聚合,数字格式以及交通灯。

子报表

Pentaho Reporting允许报表开发人员在主报表中包括子报表。 这提供了强大的功能,使报告可以并排且在报告的各个范围内包含不同的较小报告。 这些子报表可能基于不同的数据源。 以下屏幕截图是包含单独图表的报告示例

交叉表报告

交叉表报告以类似于电子表格的格式显示数据,从而易于查看数据摘要。 交叉表报告同时显示行标题和列标题以及数据单元,所有这些都可以通过报告元素进行自定义。 下图显示了交叉表报表的外观:

互动报告

尽管大多数报告在呈现后都是静态的,但报告的子集包括诸如追溯,透视和其他交互性之类的功能。 Pentaho Reporting提供了一个简单的Java和JavaScript API,用于在报表生成后对其进行处理,从而使报表生成器可以创建非常互动的报表。 当以HTML,Excel或Swing呈现报告时,Pentaho Reporting的交互式功能可用。 也可以将指向外部文档的链接添加到PDF文档中。
以下屏幕快照显示了一个带有链接的报告,单击该报告可详细折叠/展开该行:

丰富的创作工具

虽然可以使用XML或Java API生成Pentaho报告,但是大多数报告都是从Pentaho Report Designer构建的模板开始的。 Pentaho Report Designer是一个“所见即所得”(WYSIWYG)报表编辑器,它公开了Pentaho Reporting Engine提供的丰富功能。 除了从头开始构建报告之外,Pentaho Report Designer附带的报告设计向导还引导报告作者逐步构建报告,然后将其显示在报告设计器中,如以下屏幕截图所示, 进一步定制:

报告服务器

作为Pentaho套件的一部分,可以在Pentaho的分析平台上发布,执行和计划由Pentaho Reporting创建的报告。 Pentaho Analytics Platform提供身份验证和授权以及中央存储库,以管理您的业务报告。 Pentaho Analytics Platform还托管用于创建基于Pentaho元数据的报告的基于Web的临时报告用户界面。 通过将Pentaho Report Designer和Pentaho Analytics Platform结合使用,无需编写任何代码即可通过Pentaho Reporting开展业务。

用于生成报告的Java API

Pentaho Reporting附带了一个文档齐全的Java API,用于从头开始构建报告,因此,开发人员在自定义现有报告模板或从头开始构建报告时可以坚持使用Java编程语言。 该Java API使开发人员可以创建和修改报告的各个部分,包括各个页眉,页脚,组和明细带,以及在报告的每个部分中创建和修改对象。

可扩展性

Pentaho Reporting是完全从纯Java设计的,它公开了许多扩展接口。 从实现可以嵌入到报表中的基本公式和功能到编写自定义数据源或输出格式,Pentaho Reporting的源代码和API接口都有很好的文档记录,并且易于使用。

Pentaho报告网站

除了这些功能,Pentaho Reporting还在积极开发中。 请访问http://community.pentaho.com/projects/reporting/,以了解更多有关正在考虑进行开发或访问该产品的早期发行版的附加功能的信息。

Pentaho Reporting架构

Pentaho Reporting Engine主要是一个Java类库,分为其他Java项目,然后将其合并以呈现报告。该库针对性能和较小的内存空间进行了优化,并且可以完全在内存中运行,而无需生成临时文件或需要额外的编译步骤。根据GNU LGPL版本2.1的条款,可在GitHub存储库https://github.com/pentaho/pentaho-reporting中获得源代码。

GitHub存储库包含Pentaho报告设计器,它提供了用于报告定义的图形编辑器,并用作独立的桌面报告工具。此外,Pentaho Reporting领域中还有其他相关的开源工具和项目,包括Report Engine演示,Report Design向导,Report Designer和基于Web的临时报告用户界面。

以下是定义Pentaho Reporting Engine的Java项目的介绍,重点是库,Reporting Engine核心和Reporting Engine扩展。

报表引擎的库

Pentaho Reporting Engine使用以下库来呈现报告:

Flute:这是用Java编写的CSS 2解析器,实现了SAC(https://www.w3.org/Style/CSS/SAC/)。 SAC是用于CSS解析器的基于事件的标准API,在XML解析器的SAX API上紧密建模。
LibBase:这是所有其他Pentaho Reporting库的根库。该库包含常用功能,例如调试和错误日志记录实用程序,库配置以及库初始化API,用于对Reporting Engine进行一致的启动和关闭管理。
LibDocBundle:这抽象了Pentaho Reporting文件包的管理,这些文件包默认存储为ZIP文件,并实现了ODF。这使Reporting Engine的其他部分更易于使用和操纵Pentaho Reporting的文件格式。
LibFonts:这允许Pentaho Reporting使用TrueType系统字体,从字体类型中提取必要的元数据,并填充抽象界面以允许在各种上下文中进行适当的呈现,包括PDF和Excel视图。
LibFormat:这是一个字符串格式化库,可以根据格式字符串适当地呈现日期和数字。该库专注于内存和CPU效率以实现高性能报告呈现。
LibFormula:这是一个基于OpenFormula标准的公式解析和执行库。您可以通过访问http://wiki.oasis-open.org/office/About_OpenFormula了解有关OpenFormula的更多信息。该库的功能类似于基于Excel的公式定义。 LibFormula是一个非常通用的库,在Pentaho Reporting之外的其他需要OpenFormula样式解析和执行的项目中使用。 LibFormula-UI是基于LibFormula的OpenFormula表达式的公式编辑器。
LibLoader:它以通用的方式管理生成报告所需的所有必要资源的加载和缓存,为报告引擎的其他部分提供了简单的API,用于控制静态和动态内容,包括数据源和图像。

LibPensol:这是用于通过Apache VFS文件系统访问远程Pentaho解决方案存储库的访问层。它处理所有HTTP调用,XML文件的解析以及所有客户端状态管理。
LibPixie:这是WMF文件读取库,最初由David R. Harris编写,用作Pixie图像查看器的转换器。 Pixie已经去世很久了,现在已经恢复为Java 1.2.2或更高版本的WMF读取器和图像生成器。 Pixie缺乏对大多数位图格式的支持,但其他所有功能都可以正常工作。

LibRepository:这抽象了Pentaho Reporting与之交互的分层存储系统(例如文件系统)的输入和输出。这样就可以实现自定义存储系统(例如FTP)并将其映射到API,从而使Pentaho Reporting可以访问该系统。

LibSerializer:这提供了用于序列化不可序列化对象的辅助方法。这是必需的,以便报表引擎可以序列化不实现Java的可序列化接口的标准Java类。
LibSparkline:这是一个用于渲染迷你图的库。迷你图是插入到文本中以提供可视化信息以及文本描述的小型条形图或折线图。
LibSwing:这是设计时元素的常用帮助程序类存储,因此它们不必移入引擎项目,因为第三方依赖性或大量代码,它们可能会使项目where肿。

LibXml:它基于Java的XML解析Java API(JAXP)API,提供了用于XML的简单API(SAX)解析和XML编写的实用程序类。该库可确保快速加载和验证Pentaho Reporting XML模板文件。

报告引擎核心

报告引擎核心项目包含用于呈现报告的主要报告算法,以及支持样式的必要功能。 该项目还包含用于渲染特定输出的算法,包括PDF,Excel,CSV,XML等。 该引擎依靠已经提到的库来管理生成报告的加载,解析,格式化,呈现和归档。

报表引擎扩展

Reporting Engine扩展项目包含Reporting Engine的第三方扩展,这些扩展非常有用,但增加了依赖性。 该项目的扩展包括:使用Rhino项目的JavaScript表达式支持,休眠数据源工厂,使用烧烤的条形码支持,使用LibSparkline的迷你图支持以及对配置和打印的其他JDK 1.4支持。 存在其他扩展项目,其中包括图表和本书中讨论的许多数据源。

以下是一些引用项目的链接,以获取更多详细信息:

Rhino: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino
Hibernate: http://hibernate.org
Barbeque: http://barbecue.sourceforge.net

摘要
在本章中,我们介绍了Pentaho Reporting,并重点介绍了一些典型用法,为您提供了实现自己的解决方案的基本思路。嵌入式报告的典型用途包括运营,商业智能,财务和生产报告。

我们从JFreeReport的根源简要介绍了Pentaho Reporting的独特历史,并且还从8.0版中了解了很多丰富的功能。核心功能包括各种数据源集成,以及PDF,HTML和Excel呈现。另一方面,更高级的功能包括子报表和交叉表报表。此外,面向开发人员的功能(例如开放的Java API)以及可用的源代码和对企业友好的LGPL开放源代码许可证,使Pentaho Reporting在所有其他Java报告工具包中均享有优势。

本章还介绍了Pentaho Reporting的体系结构,为开发人员提供了两万英尺的视图,使他们可以了解
修改或贡献给Pentaho Reporting Engine,并赋予他们访问源代码的最大灵活性。您很快就能将Pentaho Reporting的丰富功能集应用于您的用例。

在下一章中,我们将向您介绍Pentaho Reporting易于使用的报表设计器和Java API,使将报表嵌入到Java应用程序中既有趣又容易。

 

你可能感兴趣的:(java,java面试,java编码,java)