蔡贤资+黄小虎
摘要:SPSS、SAS和MATLAB等软件具有专业的数据分析能力,不但提供了特定的接口规范,还提供了标准的数据接口。通过标准外部接口集成这些软件进行数据交换,可以为企事业单位应用系统提供强大的数据分析与计算能力,提高大数据时代的管理决策水平。
关键词关键词:集成外部对象;Web;数据分析统计;大数据
DOIDOI:10.11907/rjdk.143855
中图分类号:TP391
文献标识码:A文章编号
文章编号:16727800(2015)002015203
基金项目基金项目:广东省教育技术研究项目(YJJY12B023);华南农业大学教改项目(JG12102)
作者简介作者简介:蔡贤资(1973-),男,广东江门人, 硕士,华南农业大学理学院副教授,研究方向为计算机网络应用技术; 黄小虎(1979-),男,湖南永州人, 硕士,华南农业大学理学院讲师,研究方向为数据库。
0引言
随着社会的发展,越来越多企事业单位需要依据各种数据进行统计和分析。在网络技术飞速发展的今天,基于Web模式的数据分析和统计应用也越来越普遍,这也是大数据时代的特点。当今主流的数值分析与数据统计软件是SPSS(Statistical Product and Service Solutions)、SAS(Statistical Analysis System) 和MATLAB(Matrix Laboratory)等,它们都具有强大的数据分析与计算能力。企事业单位的应用系统如果能用外部对象集成的方式利用这些软件,可以极为方便地实现数据分析与统计功能。
1使用外部对象集成实现数据对接
相对客户的应用系统,外部的统计分析软件相当于一个外部对象,应用系统如果需要通过这个外部对象实现数据分析,就必须有某种接口能够实现内部应用系统与外部统计分析软件的数据交换,如图1所示。SPSS、SAS和MATLAB在二次开发接口上都有其特定的规范,常见的接口方式详述如下:
图1外部对象集成实现Web模式下数据分析
1.1SPSS接口方式
SPSS是世上最早的统计分析软件,至今已有近半个世纪历史,2009由IBM收购变成IBM SPSS。SPSS是一个组合式软件包,集数据录入、整理、分析于一身,基本功能包括数据管理、统计分析、图表分析、输出管理等。其擅长描述性统计、均值比较、一般线性模型、相关分析、回归分析、聚类分析、生存分析、时间序列分析等,是功能强大的主流统计分析软件。应用系统通过调用外部对象的方法可以方便地实现统计分析功能\[1\]。常用方法如下:
1.1.1利用SaxBasic环境
SaxBasic是由Polar engineering and consulting 提供的一种类VBA的编程语言,
SPSS、ERStudio、Passolo等知名软件将其作为二次开发语言。SPSS提供了相应的COM+对象接口,实现本地或远程调用。
在SPPS对象结构中,顶端是Application对象,代表SPSS自身,其它对象都在Application对象之下。Application包括4个对象: Option对象为输出浏览器、图表和数据等设置选项,Documents对象提供数据编辑、语法文档窗口、输出浏览器和草稿文档等窗口属性和操作方法,SPSS Info对象提供SPSS的一些必要信息,CS Application对象提供与网络有关的对象操作\[2\],如图2树形结构所示。
只要有一个SPSS程序实例就可通过objSpssApp对象的调用来获得SPSS实例的引用,如objSpssApp.Documents.GetDataDoc(0)引用当前数据窗口,引用其它对象也同理。实现步骤如下:
(1) 创建SPSS对象:
Dim SPSS As ISpssApp
Set SPSS = New spsswin.Application
(2)使用objSpssApp引用SPSS其它对象:
Dim objDataDoc As ISpssDataDoc
(3)获取数据窗口:
Set objDataDoc=objSpssApp.Documents.GetDataDoc(0)
(4)操作指定变量:
objDataDoc.SelectVariables(“var1”, “var2”)
objDataDoc.Clear()
(5)其它操作。
图2SPSS对象结构
1.1.2利用开发插件接口
SPSS不仅为用户提供了丰富的算法,还提供了多个可编程插件,包括 Python plugin、Microsoft .NET plugin和R plugin。使用插件可以方便地实现应用系统与SPPS的数据交换。以Python为例,通过使用 Python 插件启动 Statistics 后台程序,在 Python 中读取和写入数据文件,调用 SPSS的统计分析功能,并输出 Statistics、数据库、XSL、CSV 等格式文件。通过结合Python Plug-in和Web Service的平台中立性,可以将SPSS强大的统计分析功能集成到企事业应用系统中,为企事业单位业务分析、数据挖掘和商务智能提供有力支持,帮助其提高决策有效性\[3\]。参考步骤如下:
(1) 搭建开发环境。
安装Python2.6及以上版本,注意安装Python 的SOAP包SOAPpy和实现Python Web Service发布和SOAP 消息通信机制的ZSI包。系统自带IDE或使用Eclipse。
(2) 使用Python plugin调用 SPSS 功能。
导入SPSS包,使用spss.submit()提交命令。
(3) 为Web服务编写WSDL文件并利用ZSI实现和发布Python Web Service。
(4) 利用Web Service将SPSS Statistics功能集成至J2EE应用程序。
在Eclipse中建立Web Service Client文件并配置Web服务地址,快速构建本地客户端,将 SPSS功能集成至 J2EE 应用程序中。
由于Web Service 的平台中立性,.NET插件的使用步骤类似。系统提供了.NET Assemblies,SPSS.BackendAPI.dll 用于启动Statistics内部接口的动态库,使得在.NET中可以使用它们。 SPSS.BackendAPI.Controller.dll 包装底层的Statistics功能接口并暴露给SPSS.BackendAPI.dll,提供启动Statistics、执行Statistics语法命令、读取和写入数据以及创建输出等功能。
1.2MATLAB接口方式
MATLAB是科学计算、可视化交互程序设计的计算环境,数值计算能力十分强大,可以进行矩阵运算、绘制函数和数据、算法实现、创建UI、连接其它编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、建模设计与分析等领域。
MATLAB产品是开放式结构,它提供一个相对友好的开发环境,同时提供MATLAB Compiler,把M语言编写的函数文件编译生成函数库、可执行文件和COM组件等,这样其它高级语言如C++、JAVA等就能很方便地通过COM调用进行二次开发,把MATLAB强大的计算和分析能力集成到应用系统中来\[4\]。
1.2.1COM调用接口
将MATLAB编写的M文件转化为COM(Component Object Model)组件,在其它程序上调用COM组件,实现对MATLAB程序的调用。以JAVA调用COM方法为例,最简单的莫过于使用JACOB控件,步骤如下:
(1) 导入相关类库:
import com.jacob.activeX.*;
import com.jacob.com.*;
(2) 实例化对象:
ActiveXComponent Myc = new ActiveXComponent("MyMatlab.S");
(3) 写入参并调用。
使用Dispatch的put方法写入参数,call方法调用COM对象。
1.2.2转换为JAR包调用
MATLAB还支持把M程序直接转成JAR包供JAVA调用,使用的工具是Deployment Project,这种方式极大方便了利用JAVA实现的Web应用及与MATLAB进行数据交换。
1.2.3 进程调用模式
由于MATLAB还可以把M程序转换成独立的执行程序,因而可以用本地进程调用的方式实现互动,同时利用外部数据文件,例如TXT和XSL文件与其交换数据,方便地使用CGI或Servlet方式实现Web应用。步骤如下:
(1)创建源数据文件,生成MATLAB需要的数据文件格式如TXT和XSL等。
(2)调用MATLAB生成独立的执行程序。
例如文件为MySta.exe, 使用JAVA中runtime的exec方法实现调用外部执行程序:
Runtime rn = Runtime.getRuntime();
Process p1 = rn.exec("\""+filePath+"/type/MySta.exe\"",null,
new File(filePath+"/type"));
以上就是执行指定路径的执行程序MySta.exe。
(3)等待进程完成,读取进程在约定路径下生成的数据文件,按需要显示或写入数据库。检查方式是看约定文件是否成功生成。
1.3SAS接口方式
SAS是一个由数十个专用模块构成的集成应用软件系统,功能包括数据访问、数据储存及管理、应用开发、图形处理、数据分析、计量经济学与预测等等。系统分为4大部分:数据库、分析核心、开发呈现工具、分布处理及数据仓库。其中Base SAS模块是SAS系统的核心,其它各模块均在Base SAS提供的环境中运行。用户可选择需要的模块与Base SAS一起构成一个用户化的SAS系统。
1.3.1Spawner服务器
Spawner是运行在主机服务器上监听请求的程序,需用Spawner 来运行SAS工作区服务器和SAS存储器服务器\[5\],其默认端口为23号端口,即Telnet端口,客户端使用Telnet以发布命令的方式传输请求给Spawner,然后Spawner响应完成相应的动作。以使用 SAS connect driver for java为例,服务器端需安装SAS,有SAS/CONNECT授权,客户端有JAVA JDK,以及SAS 提供的java包:connect.jar和sas.core.jar。在JAVA中,通过使用 TelnetConnectClient 类来提交SAS请求,示范代码如下:
// Telnet实例,inf 为Properties类对象,包含连接的用户名和密码等
TelnetConnectClient client=new TelnetConnectClient(inf);
//Telnet连接SPAWNER所在主机和端口
client.connect("MySpawner",23);
//发送请求
client.rsubmit("data _null_;put ok;run;");
//关闭连接
client.disconnect();
通过连接这种方式可以在远端执行SAS命令,通过sas share*.net模块令可以在JAVA中使用jdbc来访问SAS数据集。
1.3.2Webservices方式
以JAVA为例,如果SAS服务与Java Web App部署在不同的服务器上,可以用Webservices方式来调用SAS并获取结果数据。参考步骤如下:
(1)在SAS Server上安装JDK和Tomcat。
(2)创建WebService接口:
@WebService(
serviceName = "SASService",
endpointInterface = "com.grs.webview.webservices.sas.ISASService"
)
(3) 在WebService实现中用runtime.getRuntime().exec调用SAS,调用时用-nosplash ,-nologo 、-noautoexec和-icon等参数屏蔽不必要的显示。
(4)使用BufferedReader的readline方法读取输出并按需进行显示或保存。
1.3.3本地进程调用
如果SAS服务与Java Web App部署在同一台服务器上,本地可以直接调用 runtime.getRuntime().exec,其它能调用外部程序的开发语言如C、C++等都可以用此方法实现。执行完外部进程后写入数据库,并发消息通知客户端,或者是以CGI或Servlet模式实现表单数据回送。
1.3.4IOM方式
IOM(Integrated Object Model)是一组符合COM规范的对象集,可以使用标准COM方式与SAS交互,与上文调用方式类似。
2结语
随着网络技术的发展,基于B/S模式的Web 应用系统逐渐普及,常见的Web应用开发平台如J2EE、.NET等都可以实现良好的用户界面和数据库集成,满足一般业务流管理需求。在当今大数据时代,通过接口集成外部统计分析软件对象,能为用户系统添加强大的数据分析和计算能力,极大地提高决策分析效率和水平。
参考文献参考文献:
\[1\]RAYNALD LEVESQUE , SPSS INC. SPSS programming and data management\[M\].4th edition: A Guide for SPSS and SAS Users,2007.
\[2\]项泾渭.SPSS二次开发应用框架设计\[D\].兰州: 兰州商学院, 2008.
\[3\]石芮,侯战友.使用Web Service 集成 IBM SPSS Statistics\[EB/OL\].http://www.ibm.com/developerworks/cn/data/library/techarticle/dm1203houzy/index.html,2012.
\[4\]The MathWorks Inc.用户文档\[EB/OL\]. http://www.mathworks.cn/help/matlab/index.html
\[5\]SAS Institute Inc.Spawner overview\[EB/OL\].http://support.sas.com/rnd/itech/doc9/admin_oma/sasserver/iombridge/sp_ovrvw.html#tasks.
责任编辑(责任编辑:杜能钢)