【摘要】
当数据源不是来自文件和 SQL,而是由程序现计算出来的,这种状况在许多 BI 零碎中都会呈现,BI 零碎本人治理数据模型,把数据库挡在前面,不会间接凋谢 SQL,更不会提供文件让你间接拜访,拜访数据都要通过程序接口(比方 JavaAPI 或 Webservice)——这样一来,想要对这些程序接口返回的后果集做多维分析看似就有些艰难了。没关系!润乾多维分析分分钟就能帮您搞定!程序数据集上的多维分析!
小编我本着先客户之忧而忧的服务主旨,思前想后还是感觉之前的《把 Excel 透视表搬到 WEB 上》和《给一句 SQL 就能做多维分析》对多维分析的介绍不太够,所以明天顺便再来唠唠如何对程序数据集做多维分析。
拜访 JavaAPI
API是应用程序编程接口,程序凋谢API就是凋谢接口,凋谢后接口返回的程序数据就能够被其余程序调用了。
问题来了,在俺们多维分析中怎样才能对API接口返回的程序数据做剖析呢?
简略,其实是分分钟搞定的事儿!
步骤一:
最最重要的前提,要麻烦程序猿自定义类,把要返回的后果集封装在一个静态方法中
本例小编本人写了个api,为办法传入txt文件门路,而后将txt内容以文本字符串返回。
test.txt文件内容:
自定义类TxtTest:
package api;import java.io.*; public class TxtTest {//为不便对本办法的调用,此处需为静态方法//通过对办法传入txt文件门路和是否有题目(true/false)两个参数,将txt内容以文本字符串返回public static String readTxttoString(String pathName,boolean hasTitle){final BufferedReader bfr;final String encoding = "gbk";final File file = new File(pathName);String lineTxt=null;StringBuffer buf = new StringBuffer();InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);bfr = new BufferedReader(read);while((lineTxt=bfr.readLine())!=null){buf.append(lineTxt+"\\n");}return buf.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下拉列表里的文件是从哪里读取的,还用小编再提一下吗?嘻嘻,坚固下记忆吧,这个列表默认就是把[装置根目录]\report\web\webapps\demo\WEB-INF\files\dfx这个目录下的所有dfx列出。不过这个门路也是能够批改的,批改办法和JavaApi里应用时的批改办法一样。
数据集创立实现后,接下来就是拖拽指标进行剖析了
点击【增加报表】,抉择数据集,填写报表名称【确定】
将指标拖拽到右侧数据显示区,这样一来,从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了。此处就不过多介绍了。还是那句话,更多对于集算器的学习可参考帮忙文档《函数参考》、《教程》。
好了,本篇文章尽管讲完了,但它却已成为咱们之间交友学习的开始,还在犹豫什么,快来退出乾学院吧,带你理解更腻害的多维分析。
对这方面感兴趣的同学能够到乾学院上观看收费商业智能课程。