润乾报表中使用EssBase数据库

来源:互联网 发布:人工智能与国家安全 编辑:程序博客网 时间:2024/05/02 08:16

操作步骤:

一、拷贝jdbc包

连接EssBase数据库需要的两个jar包:ess_es_server.jaress_japi.jar。如果安装了该数据库,可以在这个目录得到这两个文件:<EssBase安装目录>\AnalyticServices\JavaAPI\lib

将这两个jar包拷贝到<润乾安装目录>\jdbc”下。另外还需要拷贝log4j_128.jar,这个jar包可以从润乾报表的web发布包中找到。

拷贝完成后,启动设计器,就可以连接到EssBase的数据源了。

二、配置数据源和数据集

1、数据源的配置

新建一个数据源,类型选择多维数据库”:

输入数据库的相关信息。其中,域名、OrbPluginType、端口号、OLAP服务名”这四项配置仅在EssBase 7.3之前的版本中有效,对于高版本的EssBase数据库,可不填写。

 

2、数据集的配置

新建一个数据集,类型选择EssBase”:

数据集的类型有三种:

下面以EssBase自带的Demo数据为例,简单介绍一下这三种数据集。

2.1 从Cube中检索数据:从指定维度的指定层次中取出数据

选择“从Cube中检索数据”后,编辑界面如下:

其中,hinamizawa是数据库服务器的主机名,Demo、Sample为数据库,Basic为数据表。Year为数据的一个维度,其下的Qtr1-Qtr4是该维度的一个层次,之下还有Jan、Feb、Mar是另一个层次。“Gen2,Year”表示列举Year维度的第二层次内容,即Qtr1-Qtr4。依次类推。

选中Gen3.Year,将其拖动到右边的文本框中,点击确定返回。

注意:一定要为EssBase类型的数据集指定数据源,否则会取不到数据。

点击浏览数据,可以看到,系统成功的取到了以Year为维度的第三层次的数据:

在这里我们取的是月份,也就是Year维度的第三层次的值。如果需要取第二层次的值,EssBase也会自动进行数据的汇总:

2.2 取出Cube中的维信息:检索维度的层次信息,可用于制作多层次的报表头

选择“取出Cube中的维信息”后,编辑界面如下: 

这里我们只能展开到维定义的这一层。

选中一个维,将其拖到右边的文本编辑框中。

返回后点击“浏览数据”,可以看到,系统取出了“Year”维度下面的层次结构:

可以看到,这种数据集并不真正的取出数据,而只是取出一个维度下的层次结构。这种数据即可在数据钻取,或是多层次的分组报表中使用。

2.3 MDX多维检索:可通过多个维度定位数据

选择“MDX多维检索”后,编辑界面如下:

在这里我们可以使用五个维度检索数据,即右边界面上的“列、行、页、章、节”。这里我们将Year.Gen2拖到“列”下面,然后将Market.Gen2拖到“行”下面。

注意:同一维度下各个层次,不能拖到两个分类下;一个分类下也不能拖进两个不同的维度。

取出来的数据如图:

虽然取出的数据表是简单的网格式表,但是其中包含有分组的信息,可以被转化成一张二维表。同理,我们最多可以得到一张五维的数据表。

在报表制作方面,EssBase类型的数据集返回的是标准的润乾报表数据集,因此与我们平时制作报表并没有什么区别。

三、特别说明——系统相关设置

当报表服务器或设计器在Windows XP和Windows 2003系统下运行时,可能会出现计算数据集失败的情况,错误信息如下:

产生数据工厂: com.runqian.report4.dataset.EssDataSetFactory失败

错误来源:: : (1042006): Network Error [10061]: Unable To Connect To [your_ess_server:32768]. The client timed out waiting to connect to the Essbase Agent using TCP/IP. Check your network connections. Also please make sure that Server and Port values are correct

这是由于EssBase的jdbc会使用随机端口作为临时端口去连接数据库,而XP和2003系统默认的临时端口范围是1025~5000,如果EssBase客户端使用的端口在这个范围之外,就会连接超时。例如上面的错误信息中,EssBase使用了32768端口,而系统默认并不将这个端口分配给应用程序。

通过修改注册表,可以解除这个限制。打开注册表编辑器,进入这个路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters。在右边的窗口中,修改MaxUserPort的值为十进制的65534,修改TCPTimedWaitDelay的值为十进制的120(如果没有这两个选项则创建一个,类型是DWORD”)。如下图:

0 0
原创粉丝点击