乐趣区

关于分析:程序数据集上的多维分析

【摘要】

当数据源不是来自文件和 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: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 了。此处就不过多介绍了。还是那句话,更多对于集算器的学习可参考帮忙文档《函数参考》、《教程》。

好了,本篇文章尽管讲完了,但它却已成为咱们之间交友学习的开始,还在犹豫什么,快来退出乾学院吧,带你理解更腻害的多维分析。

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

退出移动版