【摘要】

如果数据源当前由程序计算,而不是来自文件或SQL,则许多BI系统都会发生这种情况。 BI系统自己管理数据模型,不把数据库挡在后面,不直接开放SQL,也不提供文件直接访问。 所有访问数据都希望创建从这些程序接口返回的结果集,如程序接口(例如JavaAPI或web服务) ——。没关系! 可以通过润多维分析解决! 数据集上的多维分析!

小编我本着先顾后忧的服务宗旨,想了很多,觉得对前面的《把 Excel 透视表搬到 WEB 上》和《给一句 SQL 就能做多维分析》的多维分析介绍不充分,所以今天特地对程序数据集进行多维分析。

访问 JavaAPI

API是APP编程接口,程序开放API是开放接口,其他程序可以调用开放后从接口返回的程序数据。

发生了问题。 在我们的多维分析中,我们如何分析从API接口返回的程序数据?

虽然很简单,但其实自己就可以了!

步骤一:

最重要的前提是麻烦程序猿的自定义类,并将返回的结果集封装到静态方法中

本例中的编辑自己编写api,为方法传递到txt文件路径,并将txt的内容作为文本字符串返回。

test.txt文件的内容:

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

自定义类txt测试:

打包应用程序;

importjava.io.*;

publicclassTxtTest{

//为了便于本方法的调用,在这里必须是静态方法

将txt文件路径传递给//方法,并使用两个参数(标题(true/false ) )将txt的内容作为文本字符串返回

publicstaticstringreadtxttostring (字符串路径,布尔型海洋) )。

{

finalBufferedReaderbfr;

finalStringencoding=’gbk ‘;

文件文件=新文件(文件名;

stringlinetxt=空值;

字符串缓冲器=新字符串缓冲器(;

inputstreamreaderread=新文件输入(文件),编码);

bfr=newbufferedreader (读);

while ((linetxt=bfr .读取线) )!=空值) {

buf.append (线性’\n ‘ );

}

返回缓冲区(;

}

}

步骤二:

中,将TxtTest.class文件放置在web APP应用程序可以安装的类路径中。 在本例中,以安装软件包附带的demo APP为例。 因此,可以将该文件放置在“安装根目录”\报告\ web\web应用程序\演示\ we B-INF \类中

步骤三:

在计算机设计器中创建新的txtTest.dfx,并添加参数和网格内容:

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

a1=invoke (API.txt测试. readtxttostring,pathName,hasTitle )2=A1.import@tq ) 3返回a1

使用invoke函数调用步骤1中自定义JAVA类的静态方法,并将参数传递给该方法。 保存后,将dfx文件放置在“安装根目录”\报告\ web\web应用程序\演示\ we B-INF \文件dfx目录中。 关于为什么要把文件放在这里,先卖了关口再说明。

收集器的invoke函数主要用于调用用户定义的函数,除了如上例所示返回字符串外,还可以返回许多其他类型。 但是,必须使用与收集器匹配的数据类型。 否则,在演示和调用时可能会发生错误。 与收集器中常用的数据类型相对应的Java类型包括:

整数java.lang.Integer长整数java.lang.Long浮点数java.lang.Double长实数java.math.BigInteger实数java.lang.Number布尔型Java.ller布尔型

java.sql.TimeStamp二进制数据byte[]

步骤四:

多维分析中添加 dfx 文件数据集

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

数据集窗口大家一定都不陌生,多维分析与外部API之间的通道就是通过它指定DFX文件完成的。

选择dfx文件时是不是发现步骤三中创建的dfx被列出来了,前因后果这下明白了吧,猜对了,这个列表默认就是把[安装根目录]\report\web\webapps\demo\WEB-INF\files\dfx这个目录下的所有dfx列出。想要修改这个目录路径也是ok的,在 “[demo 应用根目录]/raqsoft/guide/jsp/olap.jsp” 中添加 JS API 进行指定,如下图所示:

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

选择dfx文件,传递参数值,点击查询数据,缓存入文件保存,数据集就创建完成了!

接下来马上又到了每日开心一刻了,任性拖拽无人阻拦,哈哈!

点击【添加报表】,选择数据集,填写报表名称【确定】

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

添加报表后,数据集返回的表结构指标就这样赤裸裸的出来了,接下来就可以拖拖拽拽查看指标内容了。咋样,有没有发现其实这种调用JavaAPI的程序数据集也挺好使,只要先把自定义类做好就相当于完成一大半了,集算器dfx只是起到了个中间调用的作用。

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

API返回的程序数据不仅可以是txt文本串,还可以是json串。关于json串在多维分析的调用我们也有攻略帮您解决,其实很简单,API里的内容由您自己做主,只要最终返回的是json串就行,这里主要就是变通一下步骤三dfx文件中对json串的处理。

dfx内容作如下修改:

A1=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)2=json(A1)3return A2

访问多维分析页面,添加dfx文件类型的数据集。

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

聪明的你,看到这里应该什么都明白了吧?其实换汤不换药,重点都在dfx文件上,只是API返回的类型不同,在dfx中处理方法不同罢了。

访问 Webservice

提起Webservice一定都不陌生,一款跨编程语言和跨操作系统平台的远程调用技术。关于Webservice的使用原理小编就不班门弄斧在高手面前显摆了,相信作为资深程序猿的您早已对它了如指掌了吧,哈哈

那在我们多维分析里是否能调用这种远程接口呢?答案必须是肯定的,当然能!

我们已经做了全方位考量,不仅能调用JavaApi还能调用Webservice接口,方法和JavaApi的调用大致类同,具体是哪里相同哪里类同请看下例分晓。

下面以手机号码归属地查询作为示例,介绍对WebService的调用(本例使用的WebService服务是国内官方的手机号码归属地查询所在的服务):

步骤一:

在集算器设计器中新建 webTest.dfx,添加网格内容

ABC1=[18810690043,15207579527,13018617766, 13713309396,15810200987,13168889653, 13501321234,13003110868,13310006279, 13003113520,18718391001,13168889659]//手机号

2=ws_client(“http://ws.webxml.com.cn/WebServices/ MobileCodeWS.asmx?WSDL”)//访问国内手机号码归属地查询WEB服务

3=create(手机号,省份,城市,卡类型)//创建序表

4for A1//使用for循环,逐个查询手机号的归属地等信息

5

=ws_call(A2,”MobileCodeWS”:”MobileCodeWSSoap”: “getMobileCodeInfo”,A4:”mobileCode”)//传入手机号,从服务器查询手机号归属地6

=B5.split@1(“:”)(2).split(” “).insert(1,A4)

7

=A3.record@i(B6,0)//将查询结果作为记录插入A3序表中8return A3

保存后将 dfx 文件放至[安装根目录]\report\web\webapps\demo\WEB-INF\files\dfx目录下。

步骤二:

多维分析中添加 dfx 文件数据集

选择dfx文件,传递参数值,点击查询数据,缓存入文件保存,数据集就创建完成了!

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

dfx下拉列表里的文件是从哪里读取的,还用小编再提一下吗?嘻嘻,巩固下记忆吧,这个列表默认就是把[安装根目录]\report\web\webapps\demo\WEB-INF\files\dfx这个目录下的所有dfx列出。不过这个路径也是可以修改的,修改方法和JavaApi里使用时的修改方法一样。

数据集创建完成后,接下来就是拖拽指标进行分析了

点击【添加报表】,选择数据集,填写报表名称【确定】

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

将指标拖拽到右侧数据显示区,这样一来,从WebService服务器获取的手机归属地的信息就展现在我们眼前了,是不是很方便呢?

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

利用 Tag 标签添加 dfx 数据集

上面两种程序数据集在多维分析使用时都是通过界面数据集菜单配置的dfx数据集,其实还可以通过Tag标签添加。

在Tag标签的使用与之前讲的SQL数据集大同小异,只是属性略有不同。

Tag标签添加dfx数据集:

<raqsoft:analysev2
dfxFile=”WEB-INF/files/dfx/txtTest.dfx” //指定相对于web根目录的dfx文件
dfxParams=”pathName=’D:/2.json’;” //dfx所需的参数
… …

></raqsoft:analysev2>

在Tag标签中添加dfx数据集,访问多维分析页面时会将该数据集默认作为初始数据集,并直接将结果集以明细的形式展现在页面中。

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

叮叮叮,关于JavaApi和Webservice程序接口的访问到此就介绍完了,通过对本篇文章的学习,一定更能领会我们多维分析的妙处了吧。使用dfx数据集访问程序数据集是直接借用集算器函数轻松引入程序数据集结果,当然,除此之外还能利用集算器的计算能力,对程序数据集的结果做二次处理,最终在界面上做拖拽分组、聚合、过滤等等数据分析动作。

但是,我要说但是,这里都用到了集算器的脚本,而自写脚本的功能是不包含在基本润乾报表中的,也就是说需要花钱滴。嗯,听起来有点悲伤,不过,认真关注乾学院,后面我们会主动提供办法让你绕过这个检查,还是不花钱,一定要关注,不可错过哟!

其实两种程序接口类型在多维分析的使用中是有一定的共同点的,下图就能直观的让我们看到区别:

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园

JavaAPI和WebService两种程序数据集上的多维分析都是使用的dfx数据集,不同点是dfx文件中使用的函数不同,这是关键点!JavaApi时是先将程序接口进行封装,然后在集算器中使用invoke函数调用自定义类。WebService时则是直接使用函数远程访问官方手机号码归属地查询所在的服务器获取手机号归属地数据。

其实,如果想实现高性能还可以直接用二进制格式,但就需要学习集算器的数据类型及相关API了。此处就不过多介绍了。还是那句话,更多关于集算器的学习可参考帮助文档《函数参考》、《教程》。

好了,本篇文章虽然讲完了,但它却已成为我们之间交友学习的开端,还在犹豫什么,快来加入乾学院吧,带你了解更腻害的多维分析。

对这方面感兴趣的同学可以到乾学院上观看免费商业智能课程。

高维数据与多维数据(数据仓库多维数据模型)-冯金伟博客园