当数据源不是来自文件和 SQL,而是由程序现打算出来的,这种情形在许多 BI 系统中都会涌现,BI 系统自己管理数据模型,把数据库挡在后面,不会直接开放 SQL,更不会供应文件让你直接访问,访问数据都要通过程序接口(比如 JavaAPI 或 Webservice)——这样一来,想要对这些程序接口返回的结果集做多维剖析看似就有些困难了。没紧要!
润乾多维剖析分分钟就能帮您搞定!
程序数据集上的多维剖析!
访问 JavaAPI
API是运用程序编程接口,程序开放API便是开放接口,开放后接口返回的程序数据就可以被其他程序调用了。
问题来了,在俺们多维剖析中若何才能对API接口返回的程序数据做剖析呢?
大略,实在是分分钟搞定的事儿!
最最主要的条件,要麻烦程序猿自定义类,把要返回的结果集封装在一个静态方法中
本例
test.txt文件内容:
自定义类TxtTest:
packageapi;importjava.io.;publicclassTxtTest{//为方便对本方法的调用,此处需为静态方法//通过对方法传入txt文件路径和是否有标题(true/false)两个参数,将txt内容以文本字符串返回publicstaticStringreadTxttoString(StringpathName,booleanhasTitle){finalBufferedReaderbfr;finalStringencoding="gbk";finalFilefile=newFile(pathName);StringlineTxt=null;StringBufferbuf=newStringBuffer();InputStreamReaderread=newInputStreamReader(newFileInputStream(file),encoding);bfr=newBufferedReader(read);while((lineTxt=bfr.readLine())!=null){buf.append(lineTxt+"\n");}returnbuf.toString();}}
将TxtTest.class文件放入WEB运用能加装到的类路径下,本例以安装包自带的demo运用为例,因此该文件可放入[安装根目录]\report\web\webapps\demo\WEB-INF\classes\api下。
步骤三:
在集算器设计器中新建 txtTest.dfx,添加参数和网格内容:
A1=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)2=A1.import@tq()3return A1
利用invoke函数,调用步骤一中自定义JAVA类中的静态方法,并为方法传入参数。 保存后将dfx文件放至[安装根目录]\report\web\webapps\demo\WEB-INF\files\dfx目录下。至于为啥要把文件放到这儿,先卖个关子,后面再阐明。
集算器用的invoke函数紧张是用来调用用户自定义函数的,不仅能像上面例子这样返回字符串,还可以返回其他多种类型,不过必须利用可与集算器匹配的数据类型,否则有可能在展现或调用时涌现缺点。集算器中常用数据类型对应的Java类型如下:
整数java.lang.Integer长整数java.lang.Long浮点数java.lang.Double长实数java.math.BigInteger实数java.lang.Number布尔型java.lang.Boolean字符串java.lang.String日期java.sql.Date韶光java.sql.Time日期韶光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下拉列表里的文件是从哪里读取的,还用
数据集创建完成后,接下来便是拖拽指标进行剖析了
点击【添加报表】,选择数据集,填写报表名称【确定】
将指标拖拽到右侧数据显示区,这样一来,从WebService做事器获取的手机归属地的信息就展现在我们面前了,是不是很方便呢?
利用 Tag 标签添加 dfx 数据集
上面两种程序数据集在多维剖析利用时都是通过界面数据集菜单配置的dfx数据集,实在还可以通过Tag标签添加。
在Tag标签的利用与之前讲的SQL数据集大同小异,只是属性略有不同。
Tag标签添加dfx数据集:
<raqsoft:analysev2dfxFile="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了。此处就不过多先容了。还是那句话,更多关于集算器的学习可参考帮助文档《函数参考》、《教程》。
好了,本篇文章虽然讲完了,但它却已成为我们之间交友学习的开端,还在犹豫什么,快来加入乾学院吧,带你理解更腻害的多维剖析。
对这方面感兴趣的同学可以到乾学院上不雅观看免费商业智能课程。