2.5 BISERVER之Cache管理
从我目前了解的情况看来,部分cache与pentaho的session相关,即用户一次会话所用的缓存与一个cache相关,这个可以从CacbeManager的类即可发现,CacheManager只实现了IcacheManager并未继承任何类,并且从其中发现Hibernate的CacheProvider变量即可只利用Hibernate的echache来提供cache对象。并且定义变量private Map<String, Cache> regionCache,其中String即为session的id。Cache自然为cache变量。
另外,在定义的PentahoCacheSessionListener implements HttpSessionListener,中的sessionDestroyed方法也可以验证cache与session相关,其方法为
public void sessionDestroyed(final HttpSessionEvent event) {
HttpSession session = event.getSession();
Object obj = session.getAttribute( PentahoSystem.PENTAHO_SESSION_KEY ); //$NON-NLS-1$
if (obj != null) {
IPentahoSession userSession = (IPentahoSession)obj;
ICacheManager cacheManager = PentahoSystem.getCacheManager( userSession );
if ( null != cacheManager ) {
IPentahoSession pentahoSession = (IPentahoSession) obj;
if(pentahoSession != null) {
cacheManager.removeRegionCache(pentahoSession.getId());
}
}
}
}
removeRegionCache就不阐述源码了,即为从regionCache中移除以pentahoSession.getId()为key的cache,关闭与清除cache要调用其cache的clear方法。
2.6 BISERVER之执行引擎
BISERVER数据展示在demo中主要有4中,分别为图表(只显示数据图形),报表、多维分析和仪表盘。首先分析图表,在Pentaho User Console中,点击某个图表解决方案,发现房屋的url为http://localhost:8080/pentaho/ChartSamplesDashboard,在web.xml中查找发现其处理终端为ChartSamplesDashboard.jsp,其中调用ChartHelper.doChart( "steel-wheels", "charts", "barchart.xml", parameters, content, userSession, messages, null )显示图形。
其函数定义如下:
public static boolean doChart(final String solutionName, final String actionPath, final String chartName,
final IParameterProvider parameterProvider, final StringBuffer outputStream, final IPentahoSession userSession,
final ArrayList messages, ILogger logger)
从以上函数的源码中,能够发现图表的解析过程,首先获得初始化一些参数,如图表宽和高之类的显示属性,然后到pentaho-solutions\solutionName\actionPath文件夹,查询chartName的图表,并且解析它,获得图表类型属性,根据这些属性生成CategoryDatasetChartComponent对象,调用getXmlContent()方法获得图表内容,在getXmlContent方法中利用createChart生成数据集,createChart调用getActionData获得IpentahoResultSet数据集,而在getActionData中则是通过org.pentaho.platform.engine.services.solution.SolutionEngine的execute方法再次解析解决方案,这次是要获得数据,解析barchart_data.xaction文件,其中定义了一系列的action序列,包括数据源类型和查询语句,SolutionEngine进行解析过程产生RuntimeContext对象,其调用executeSequence方法执行barchart_data.xaction解析出来的action序列,将结果保存在ParameterManager对象中,后返回IruntimeContext对象,最终利用其获得IpentahoResultSet对象,再生成报表所需的DataSet。
2.7 Pentaho MetaData Editor
Pentaho MetaData Editor将数据源描述三个层次,分别为物理层、抽象业务层和业务层,如下图所示:

其中,Connections下的为物理层,Bussiness Models为业务层,它又分为Bussiness Tables和Bussiness View即上面提到的抽象业务层和业务层,其中的Relationships表示其中的业务表的关联关系。
下图为物理表的数据描述:

物理表的描述比较简单,其中一些描述含义和用处我也没理解。
下图为物理表列的描述:

其中增加了更加详细的列描述,如聚合类型,计算的语法等等。
下图为抽象业务层表描述属性:

它比物理层的表多了Metadata Security描述,因此它可以定义该模型表能够某用户对其的操作,具体设置过程如下图:

默认是无权限设置的。
下图为抽象业务层表列描述,如下图:

列都包含了安全信息,同时具有物理层的所有描述。
下图为业务层表描述:

很简单啊。
下面看看其列描述,如下图:

与抽象层是相同。
上面介绍了它们各个层的表和列的描述都包含哪些,它们是如何存储的,导出后发现生成的以xmi结尾的文件,开头的部分内容如下:

从上面的命名空间可以看出,其遵循的为XMI规范,XMI(XML-based Metadata Interchange) 使用扩展标记语言(XML),为程序员和其它用户提供元数据信息交换的标准方法。XMI的目的在于帮助使用统一建模语言(UML)以及不同语言和开发工具的程序员彼此交换数据模型。XMI也可用于交换数据仓库信息。XMI格式有效地标准化了任意元数据集的描述,它要求用户跨越多个工业和操作环境而使用同一种方式读取数据。
Pentaho Metadata editor形成的xmi文件有什么用处呢,我只在report designer发现其用户,可以作为数据源使用,如下图:

可以选择生成的xmi文件,然后选择表和列即可了。
2.8 Pentaho之数据查询接口与实现
Pentaho自己设计了查询接口,所有的数据查询(在图表、报表及多维分析中)均返回自己查询的接口对象,主要的接口为IpentahoResultSet、IpentahoMetaData、IpentahoConnection。
首先分析下IpentahoConnection的属性和结构,public interface IpentahoConnection,如下图:

在pentaho中有其4个实现类,分别为SQLConnection、MDXConnection、XQConnection(XML数据连接)、HQLConnection。
在SQLConnection中,自然利用sql的连接实现,其属性和构造函数如下图:

其中的nativeConnection : Connection变量即为sql的数据库连接,我们还注意到其中的ResultSet变量为IpentahoResultSet类型。其构造函数分别传入驱动类型、数据库连用户名及密码等,然后调用init函数初始化连接。
MDXConnection为Mondrain的连接,其属性和构造函数大致如下图:

其nativeConnection为mondrian.olap.Connection类型,在构造函数中进行初始化连接。
剩下的xml连接中依靠生成的net.sf.saxon.Configuration查询,而在hibernate查询中则保存了org.hibernate.cfg.Configuration做为根本。
然后再分析下IpentahoResultSet、IpentahoMetaData,由于不同类型的查询均有自己的ResultSet和Metadatadio对象,于是它们都需要在executeQuery中进行转换,如在SqlConnection中的查询方法返回SQLResultSet对象,其构造函数为
public SQLResultSet(final ResultSet nativeResultSet, final SQLConnection nativeConnection) 。
MDX则同样,Metadata与其原理是相同的,进行了封装,其SQLResultSet的获得metadata方法如下:
public IPentahoMetaData getMetaData() {
if (metadata == null) {
try {
metadata = new SQLMetaData(nativeResultSet.getMetaData());
} catch (SQLException e) {
// log.error(null, e);
throw new RuntimeException(e);
}
}
return metadata;
}
从而可以发现IpentahoResultSet、IpentahoMetaData、IpentahoConnection与不同的数据源实现均利用其本地实现进行了封装而成,因此我们只需要关注这些接口定义了哪些方法即可。IpentahoConnection已经进行了说明,下图为IpentahoResultSet接口:

没有定义任何变量。下图为IpentahoMetaData接口定义:

看起来sql的简单,但是注意其getColumnHeaders对象,实现起来可能复杂了。
getRowHeaders很少见,哪里采用rowHeaders呢,首先想到了mondrain的查询结果,也会有行头的。

- 大小: 40.4 KB

- 大小: 13.1 KB

- 大小: 20.4 KB

- 大小: 15.7 KB

- 大小: 12.5 KB

- 大小: 24.9 KB

- 大小: 5 KB

- 大小: 24.2 KB

- 大小: 17.9 KB

- 大小: 23.8 KB

- 大小: 62.9 KB

- 大小: 43 KB

- 大小: 43.9 KB

- 大小: 24.6 KB

- 大小: 19.9 KB
分享到:
相关推荐
以下是对 Pentaho 学习笔记的详细解析: **一、Pentaho 整体架构** Pentaho 包含多个组件,它们协同工作以提供完整的BI解决方案: 1. **Pentaho Data Integration (Kettle)**:Kettle 是 Pentaho 的数据提取、转换...
Pentaho是开源的企业级商业智能(BI)平台,它提供了数据集成、报表、分析和仪表板等一系列工具,帮助企业实现数据的深度挖掘与分析。在进行二次开发时,开发者经常需要根据自身需求定制Pentaho User Console(PUC)...
3. **工作流与转换**:在Pentaho Kettle中,工作流(Job)和转换(Transformation)是两个核心概念。工作流负责控制整个流程的执行顺序,而转换则专注于单个数据处理任务。工作流可以包含多个转换,并根据特定条件或...
《015.pdf》的标题不明确,但根据上下文,它可能包含了Pentaho Kettle的某个特定主题或进阶教程,比如性能优化、大数据处理、或是与其他Pentaho产品(如Pentaho Business Analytics)的集成。 《Pentaho_Technical_...
#### 二、Pentaho与MySQL结合的优势 在商业智能领域,Pentaho与MySQL的结合能够为企业提供强大的数据处理和分析能力。MySQL作为一款流行的关系型数据库管理系统,以其高性能、高可靠性及低成本而受到广泛欢迎。当...
Pentaho是一款开源的企业级商业智能(BI)平台,它提供了数据集成、数据分析和报表等多种功能。这个压缩包中包含的是一系列经典的中文资料,涵盖了Pentaho的不同方面,旨在帮助用户深入理解和使用Pentaho。 1. **...
【标题】:“Pentaho CDE 整合 Birt” 【描述】: ...通过以上介绍,我们可以看出Pentaho CDE与Birt的整合,是将强大的报表设计能力与交互式仪表板相结合,为企业级数据分析和决策支持提供了强大工具。
1. **界面层**:包括Web客户端和富客户端应用,如Pentaho Analyzer和Pentaho Report Designer,它们与服务器端通信,展示数据和分析结果。 2. **核心层**:包含数据访问、处理和转换的核心组件,如PDI(用于数据集成...
### 在Linux上安装Pentaho BI Server的知识点详解 #### 一、配置JAVA环境 ...遵循这些步骤可以帮助用户顺利完成Pentaho BI Server的部署和配置,从而更好地利用该工具进行数据分析与报表制作等工作。
Pentaho 开放源码商业智能平台技术白皮书 Pentaho 是一个开放源码的商业智能平台,提供了一个完整的商业智能解决方案,包括数据integration、报表生成、数据分析和数据 mining 等功能。下面是 Pentaho 的技术白皮书...
### 二、Pentaho的主要功能与特点 #### 1. **数据集成(ETL)** Pentaho提供了强大的数据集成工具,通常被称为ETL(Extract, Transform, Load)。这些工具可以帮助用户从各种数据源提取数据,对数据进行清洗、转换...
Pentaho Data Integration(原Kettle)和 Data Reporting工具最新版9.0.0.2.530百度云下载地址 ETL工具及报表展示工具
根据提供的文件信息,我们可以推断出这是一本关于如何利用Pentaho与MySQL进行商业智能(Business Intelligence,简称BI)及数据仓库(Data Warehousing,简称DW)建设的专业书籍。以下将对该书涉及的主要知识点进行...
赠送jar包:pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar; 赠送原API文档:pentaho-aggdesigner-algorithm-5.1.5-jhyde-javadoc.jar; 赠送源代码:pentaho-aggdesigner-algorithm-5.1.5-jhyde-sources.jar; ...
pentaho kettle PDI 9.2下载
5. 工作流(Pentaho Workflow):允许用户通过图形化的方式创建复杂的数据处理流程,并且可以与外部系统集成。 在本书中,读者将了解到以下知识点: - 如何安装和配置Pentaho的各个组件。 - 如何创建和管理数据源...
具体到"7839OS Code Bundle"这个文件,它可能是该版本的源代码包,包含了Pentaho Reporting的源代码和其他相关资源,对于开发者来说,这是一个深入理解软件工作原理和进行二次开发的重要资源。 总的来说,Pentaho ...