历史版本23 :多维数据集插件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

多维数据库(Multi Dimensional Database,MDD),顾名思义,就是指将数据存储在多个维度中,简单来说,就是将数据存放在一个n维数组中,而不是像关系据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。多维数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询效率。

2. 操作步骤编辑

FineReport提供了XMLA数据连接的方式来与多维数据库进行连接,建立桥梁,通过该桥梁,FineReport可以轻松获取到多维数据库中的数据转换为二维表进行模板制作,数据分析。
2.1 安装多维数据集插件,或者导入相关jar包
注:8.0版本只需要安装多维数据集插件即可
另:多维数据集插件需要1.7或者以上的jdk

设计器插件安装方法参照设计器插件管理

服务器安装插件方法参照服务器插件管理
点击重启设计器,稍后设计器会自动重启,重启后插件即被启用成功,数据连接里就会出现XMLA数据连接,如下图所示。
222

注:8.0之前的版本才需要导入下面的jar包
在使用XMLA数据连接方式连接多维数据库之前,首先要导入2个与XMLA数据连接相关的jar包:olap4j.jarolap4j-xmla.jar
olap4j-1.1.0.jar:其下载地址为olap4j
olap4j-xmla-1.1.0.jar:其下载地址为olap4j-xmla
jar放在%FR_HOME%\WEB-INF\lib路径下面。
2.2 新建数据连接
打开设计器,点击服务器>定义数据连接,进入定义数据连接对话框,点击222按钮添加一个XMLA数据连接,如下图:

222

2.3 数据连接参数配置
FineReport多维数据库XMLA数据连接支持市场上主流的SQLServer Analysis ServicesOracle EssbaseSAP HANA和SAP BW等等数据库类型,下面我们一一讲解各类型多维数据库的连接方式。

(1)SQLServer Analysis Services
SQLServer Analysis Services简称为SSAS,是指在内置计算支持的单个统一逻辑模型中,设计、创建和管理包含来自多个数据源(如关系数据库)的详细信息和聚合数据的多维结构。
XMLA数据连接参数配置界面上的数据库类型选择SQLServer Analysis Services,在URL输入该数据库所在站点地址,用户名及密码,然后点击数据库标签后面的下拉选项,FineReport会自动将该站点下面的所有多维数据库加载显示在下拉列表中,选中需要连接的数据库即可,如下图:

222

注:上面的XMLA URL连接的是直接通过IIS发布的站点。
点击测试连接即表示连接成功。

(2)Oracle Essbase
数据库类型选择Oracle Essbase,在URL输入该数据库所在站点地址,用户名及密码,然后点击数据库标签后面的下拉选项,FineReport会自动将该站点下面的所有多维数据库加载显示在下拉列表中,选中需要连接的数据库即可,如下图:

222
点击测试连接即表示连接成功。
注:简单通用查询时,在选择的维度上过滤,不支持“包含”“不包含”“开头是”,在非选择的维度上做过滤,只支持“等于”
另:涉及到复杂的过滤形式可以使用自定义MDX查询

3SAP HANA
数据库类型选择SAP HANA,在URL输入该数据库所在站点地址,用户名及密码,然后点击数据库标签后面的下拉选项,FineReport会自动将该站点下面的所有多维数据库加载显示在下拉列表中,选中需要连接的数据库即可,如下图:

222
点击测试连接即表示连接成功。
详细设置查看SAP HANA 连接

XMLA数据连接建立好之后,就可以添加多维数据库XMLA数据集。

3. http-503报错解决方案编辑

3.1 原因
创建SSAS服务的时候,使用到的一个配置项是msmdpump.ini。
这个配置项文件在默认的时候,通过IIS代理连接到SSAS时每个客户端的最大连接数默认是4个,服务器限制了多并发的访问,所以连接数超过4个会产生HTTP 503的报错。
3.2 解决方案
在这边我们通过修改这个文件如下:
修改前:
<ConfigurationSettings> <ServerName>localhost</ServerName> <SessionTimeout>3600</SessionTimeout> <ConnectionPoolSize>100</ConnectionPoolSize> <MinThreadPoolSize>0</MinThreadPoolSize><!--这一行可能没有--> <MaxThreadPoolSize>0</MaxThreadPoolSize><!--这一行可能没有--> <MaxThreadsPerClient>4</MaxThreadsPerClient><!--这一行可能没有--> </ConfigurationSettings>

修改后:

<ConfigurationSettings> <ServerName>localhost</ServerName> <SessionTimeout>3600</SessionTimeout> <ConnectionPoolSize>100</ConnectionPoolSize> <MinThreadPoolSize>200</MinThreadPoolSize><!--这一行添加上,200是推荐值--> <MaxThreadPoolSize>500</MaxThreadPoolSize><!--这一行添加上,500是推荐值--> <MaxThreadsPerClient>100</MaxThreadsPerClient><!--这一行添加上,100是推荐值--> </ConfigurationSettings>

数据根据需要修改,遵循的规则是:

MaxThreadsPerClient < MinThreadPoolSize < MaxThreadPoolSize

改完之后,这个时候假如访问该服务,仍旧没有解决多线程下的数据问题,就关闭再开启一下服务,刷新,就能解决了,如下图:
222

222