蔡賢資+黃小虎
摘要:SPSS、SAS和MATLAB等軟件具有專業(yè)的數(shù)據(jù)分析能力,不但提供了特定的接口規(guī)范,還提供了標(biāo)準(zhǔn)的數(shù)據(jù)接口。通過標(biāo)準(zhǔn)外部接口集成這些軟件進(jìn)行數(shù)據(jù)交換,可以為企事業(yè)單位應(yīng)用系統(tǒng)提供強(qiáng)大的數(shù)據(jù)分析與計算能力,提高大數(shù)據(jù)時代的管理決策水平。
關(guān)鍵詞關(guān)鍵詞:集成外部對象;Web;數(shù)據(jù)分析統(tǒng)計;大數(shù)據(jù)
DOIDOI:10.11907/rjdk.143855
中圖分類號:TP391
文獻(xiàn)標(biāo)識碼:A文章編號
文章編號:16727800(2015)002015203
基金項(xiàng)目基金項(xiàng)目:廣東省教育技術(shù)研究項(xiàng)目(YJJY12B023);華南農(nóng)業(yè)大學(xué)教改項(xiàng)目(JG12102)
作者簡介作者簡介:蔡賢資(1973-),男,廣東江門人, 碩士,華南農(nóng)業(yè)大學(xué)理學(xué)院副教授,研究方向?yàn)橛嬎銠C(jī)網(wǎng)絡(luò)應(yīng)用技術(shù); 黃小虎(1979-),男,湖南永州人, 碩士,華南農(nóng)業(yè)大學(xué)理學(xué)院講師,研究方向?yàn)閿?shù)據(jù)庫。
0引言
隨著社會的發(fā)展,越來越多企事業(yè)單位需要依據(jù)各種數(shù)據(jù)進(jìn)行統(tǒng)計和分析。在網(wǎng)絡(luò)技術(shù)飛速發(fā)展的今天,基于Web模式的數(shù)據(jù)分析和統(tǒng)計應(yīng)用也越來越普遍,這也是大數(shù)據(jù)時代的特點(diǎn)。當(dāng)今主流的數(shù)值分析與數(shù)據(jù)統(tǒng)計軟件是SPSS(Statistical Product and Service Solutions)、SAS(Statistical Analysis System) 和MATLAB(Matrix Laboratory)等,它們都具有強(qiáng)大的數(shù)據(jù)分析與計算能力。企事業(yè)單位的應(yīng)用系統(tǒng)如果能用外部對象集成的方式利用這些軟件,可以極為方便地實(shí)現(xiàn)數(shù)據(jù)分析與統(tǒng)計功能。
1使用外部對象集成實(shí)現(xiàn)數(shù)據(jù)對接
相對客戶的應(yīng)用系統(tǒng),外部的統(tǒng)計分析軟件相當(dāng)于一個外部對象,應(yīng)用系統(tǒng)如果需要通過這個外部對象實(shí)現(xiàn)數(shù)據(jù)分析,就必須有某種接口能夠?qū)崿F(xiàn)內(nèi)部應(yīng)用系統(tǒng)與外部統(tǒng)計分析軟件的數(shù)據(jù)交換,如圖1所示。SPSS、SAS和MATLAB在二次開發(fā)接口上都有其特定的規(guī)范,常見的接口方式詳述如下:
圖1外部對象集成實(shí)現(xiàn)Web模式下數(shù)據(jù)分析
1.1SPSS接口方式
SPSS是世上最早的統(tǒng)計分析軟件,至今已有近半個世紀(jì)歷史,2009由IBM收購變成IBM SPSS。SPSS是一個組合式軟件包,集數(shù)據(jù)錄入、整理、分析于一身,基本功能包括數(shù)據(jù)管理、統(tǒng)計分析、圖表分析、輸出管理等。其擅長描述性統(tǒng)計、均值比較、一般線性模型、相關(guān)分析、回歸分析、聚類分析、生存分析、時間序列分析等,是功能強(qiáng)大的主流統(tǒng)計分析軟件。應(yīng)用系統(tǒng)通過調(diào)用外部對象的方法可以方便地實(shí)現(xiàn)統(tǒng)計分析功能\[1\]。常用方法如下:
1.1.1利用SaxBasic環(huán)境
SaxBasic是由Polar engineering and consulting 提供的一種類VBA的編程語言,
SPSS、ERStudio、Passolo等知名軟件將其作為二次開發(fā)語言。SPSS提供了相應(yīng)的COM+對象接口,實(shí)現(xiàn)本地或遠(yuǎn)程調(diào)用。
在SPPS對象結(jié)構(gòu)中,頂端是Application對象,代表SPSS自身,其它對象都在Application對象之下。Application包括4個對象: Option對象為輸出瀏覽器、圖表和數(shù)據(jù)等設(shè)置選項(xiàng),Documents對象提供數(shù)據(jù)編輯、語法文檔窗口、輸出瀏覽器和草稿文檔等窗口屬性和操作方法,SPSS Info對象提供SPSS的一些必要信息,CS Application對象提供與網(wǎng)絡(luò)有關(guān)的對象操作\[2\],如圖2樹形結(jié)構(gòu)所示。
只要有一個SPSS程序?qū)嵗涂赏ㄟ^objSpssApp對象的調(diào)用來獲得SPSS實(shí)例的引用,如objSpssApp.Documents.GetDataDoc(0)引用當(dāng)前數(shù)據(jù)窗口,引用其它對象也同理。實(shí)現(xiàn)步驟如下:
(1) 創(chuàng)建SPSS對象:
Dim SPSS As ISpssApp
Set SPSS = New spsswin.Application
(2)使用objSpssApp引用SPSS其它對象:
Dim objDataDoc As ISpssDataDoc
(3)獲取數(shù)據(jù)窗口:
Set objDataDoc=objSpssApp.Documents.GetDataDoc(0)
(4)操作指定變量:
objDataDoc.SelectVariables(“var1”, “var2”)
objDataDoc.Clear()
(5)其它操作。
圖2SPSS對象結(jié)構(gòu)
1.1.2利用開發(fā)插件接口
SPSS不僅為用戶提供了豐富的算法,還提供了多個可編程插件,包括 Python plugin、Microsoft .NET plugin和R plugin。使用插件可以方便地實(shí)現(xiàn)應(yīng)用系統(tǒng)與SPPS的數(shù)據(jù)交換。以Python為例,通過使用 Python 插件啟動 Statistics 后臺程序,在 Python 中讀取和寫入數(shù)據(jù)文件,調(diào)用 SPSS的統(tǒng)計分析功能,并輸出 Statistics、數(shù)據(jù)庫、XSL、CSV 等格式文件。通過結(jié)合Python Plug-in和Web Service的平臺中立性,可以將SPSS強(qiáng)大的統(tǒng)計分析功能集成到企事業(yè)應(yīng)用系統(tǒng)中,為企事業(yè)單位業(yè)務(wù)分析、數(shù)據(jù)挖掘和商務(wù)智能提供有力支持,幫助其提高決策有效性\[3\]。參考步驟如下:
(1) 搭建開發(fā)環(huán)境。
安裝Python2.6及以上版本,注意安裝Python 的SOAP包SOAPpy和實(shí)現(xiàn)Python Web Service發(fā)布和SOAP 消息通信機(jī)制的ZSI包。系統(tǒng)自帶IDE或使用Eclipse。
(2) 使用Python plugin調(diào)用 SPSS 功能。
導(dǎo)入SPSS包,使用spss.submit()提交命令。
(3) 為Web服務(wù)編寫WSDL文件并利用ZSI實(shí)現(xiàn)和發(fā)布Python Web Service。
(4) 利用Web Service將SPSS Statistics功能集成至J2EE應(yīng)用程序。
在Eclipse中建立Web Service Client文件并配置Web服務(wù)地址,快速構(gòu)建本地客戶端,將 SPSS功能集成至 J2EE 應(yīng)用程序中。
由于Web Service 的平臺中立性,.NET插件的使用步驟類似。系統(tǒng)提供了.NET Assemblies,SPSS.BackendAPI.dll 用于啟動Statistics內(nèi)部接口的動態(tài)庫,使得在.NET中可以使用它們。 SPSS.BackendAPI.Controller.dll 包裝底層的Statistics功能接口并暴露給SPSS.BackendAPI.dll,提供啟動Statistics、執(zhí)行Statistics語法命令、讀取和寫入數(shù)據(jù)以及創(chuàng)建輸出等功能。
1.2MATLAB接口方式
MATLAB是科學(xué)計算、可視化交互程序設(shè)計的計算環(huán)境,數(shù)值計算能力十分強(qiáng)大,可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、算法實(shí)現(xiàn)、創(chuàng)建UI、連接其它編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、建模設(shè)計與分析等領(lǐng)域。
MATLAB產(chǎn)品是開放式結(jié)構(gòu),它提供一個相對友好的開發(fā)環(huán)境,同時提供MATLAB Compiler,把M語言編寫的函數(shù)文件編譯生成函數(shù)庫、可執(zhí)行文件和COM組件等,這樣其它高級語言如C++、JAVA等就能很方便地通過COM調(diào)用進(jìn)行二次開發(fā),把MATLAB強(qiáng)大的計算和分析能力集成到應(yīng)用系統(tǒng)中來\[4\]。
1.2.1COM調(diào)用接口
將MATLAB編寫的M文件轉(zhuǎn)化為COM(Component Object Model)組件,在其它程序上調(diào)用COM組件,實(shí)現(xiàn)對MATLAB程序的調(diào)用。以JAVA調(diào)用COM方法為例,最簡單的莫過于使用JACOB控件,步驟如下:
(1) 導(dǎo)入相關(guān)類庫:
import com.jacob.activeX.*;
import com.jacob.com.*;
(2) 實(shí)例化對象:
ActiveXComponent Myc = new ActiveXComponent("MyMatlab.S");
(3) 寫入?yún)⒉⒄{(diào)用。
使用Dispatch的put方法寫入?yún)?shù),call方法調(diào)用COM對象。
1.2.2轉(zhuǎn)換為JAR包調(diào)用
MATLAB還支持把M程序直接轉(zhuǎn)成JAR包供JAVA調(diào)用,使用的工具是Deployment Project,這種方式極大方便了利用JAVA實(shí)現(xiàn)的Web應(yīng)用及與MATLAB進(jìn)行數(shù)據(jù)交換。
1.2.3 進(jìn)程調(diào)用模式
由于MATLAB還可以把M程序轉(zhuǎn)換成獨(dú)立的執(zhí)行程序,因而可以用本地進(jìn)程調(diào)用的方式實(shí)現(xiàn)互動,同時利用外部數(shù)據(jù)文件,例如TXT和XSL文件與其交換數(shù)據(jù),方便地使用CGI或Servlet方式實(shí)現(xiàn)Web應(yīng)用。步驟如下:
(1)創(chuàng)建源數(shù)據(jù)文件,生成MATLAB需要的數(shù)據(jù)文件格式如TXT和XSL等。
(2)調(diào)用MATLAB生成獨(dú)立的執(zhí)行程序。
例如文件為MySta.exe, 使用JAVA中runtime的exec方法實(shí)現(xiàn)調(diào)用外部執(zhí)行程序:
Runtime rn = Runtime.getRuntime();
Process p1 = rn.exec("\""+filePath+"/type/MySta.exe\"",null,
new File(filePath+"/type"));
以上就是執(zhí)行指定路徑的執(zhí)行程序MySta.exe。
(3)等待進(jìn)程完成,讀取進(jìn)程在約定路徑下生成的數(shù)據(jù)文件,按需要顯示或?qū)懭霐?shù)據(jù)庫。檢查方式是看約定文件是否成功生成。
1.3SAS接口方式
SAS是一個由數(shù)十個專用模塊構(gòu)成的集成應(yīng)用軟件系統(tǒng),功能包括數(shù)據(jù)訪問、數(shù)據(jù)儲存及管理、應(yīng)用開發(fā)、圖形處理、數(shù)據(jù)分析、計量經(jīng)濟(jì)學(xué)與預(yù)測等等。系統(tǒng)分為4大部分:數(shù)據(jù)庫、分析核心、開發(fā)呈現(xiàn)工具、分布處理及數(shù)據(jù)倉庫。其中Base SAS模塊是SAS系統(tǒng)的核心,其它各模塊均在Base SAS提供的環(huán)境中運(yùn)行。用戶可選擇需要的模塊與Base SAS一起構(gòu)成一個用戶化的SAS系統(tǒng)。
1.3.1Spawner服務(wù)器
Spawner是運(yùn)行在主機(jī)服務(wù)器上監(jiān)聽請求的程序,需用Spawner 來運(yùn)行SAS工作區(qū)服務(wù)器和SAS存儲器服務(wù)器\[5\],其默認(rèn)端口為23號端口,即Telnet端口,客戶端使用Telnet以發(fā)布命令的方式傳輸請求給Spawner,然后Spawner響應(yīng)完成相應(yīng)的動作。以使用 SAS connect driver for java為例,服務(wù)器端需安裝SAS,有SAS/CONNECT授權(quán),客戶端有JAVA JDK,以及SAS 提供的java包:connect.jar和sas.core.jar。在JAVA中,通過使用 TelnetConnectClient 類來提交SAS請求,示范代碼如下:
// Telnet實(shí)例,inf 為Properties類對象,包含連接的用戶名和密碼等
TelnetConnectClient client=new TelnetConnectClient(inf);
//Telnet連接SPAWNER所在主機(jī)和端口
client.connect("MySpawner",23);
//發(fā)送請求
client.rsubmit("data _null_;put ok;run;");
//關(guān)閉連接
client.disconnect();
通過連接這種方式可以在遠(yuǎn)端執(zhí)行SAS命令,通過sas share*.net模塊令可以在JAVA中使用jdbc來訪問SAS數(shù)據(jù)集。
1.3.2Webservices方式
以JAVA為例,如果SAS服務(wù)與Java Web App部署在不同的服務(wù)器上,可以用Webservices方式來調(diào)用SAS并獲取結(jié)果數(shù)據(jù)。參考步驟如下:
(1)在SAS Server上安裝JDK和Tomcat。
(2)創(chuàng)建WebService接口:
@WebService(
serviceName = "SASService",
endpointInterface = "com.grs.webview.webservices.sas.ISASService"
)
(3) 在WebService實(shí)現(xiàn)中用runtime.getRuntime().exec調(diào)用SAS,調(diào)用時用-nosplash ,-nologo 、-noautoexec和-icon等參數(shù)屏蔽不必要的顯示。
(4)使用BufferedReader的readline方法讀取輸出并按需進(jìn)行顯示或保存。
1.3.3本地進(jìn)程調(diào)用
如果SAS服務(wù)與Java Web App部署在同一臺服務(wù)器上,本地可以直接調(diào)用 runtime.getRuntime().exec,其它能調(diào)用外部程序的開發(fā)語言如C、C++等都可以用此方法實(shí)現(xiàn)。執(zhí)行完外部進(jìn)程后寫入數(shù)據(jù)庫,并發(fā)消息通知客戶端,或者是以CGI或Servlet模式實(shí)現(xiàn)表單數(shù)據(jù)回送。
1.3.4IOM方式
IOM(Integrated Object Model)是一組符合COM規(guī)范的對象集,可以使用標(biāo)準(zhǔn)COM方式與SAS交互,與上文調(diào)用方式類似。
2結(jié)語
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,基于B/S模式的Web 應(yīng)用系統(tǒng)逐漸普及,常見的Web應(yīng)用開發(fā)平臺如J2EE、.NET等都可以實(shí)現(xiàn)良好的用戶界面和數(shù)據(jù)庫集成,滿足一般業(yè)務(wù)流管理需求。在當(dāng)今大數(shù)據(jù)時代,通過接口集成外部統(tǒng)計分析軟件對象,能為用戶系統(tǒng)添加強(qiáng)大的數(shù)據(jù)分析和計算能力,極大地提高決策分析效率和水平。
參考文獻(xiàn)參考文獻(xiàn):
\[1\]RAYNALD LEVESQUE , SPSS INC. SPSS programming and data management\[M\].4th edition: A Guide for SPSS and SAS Users,2007.
\[2\]項(xiàng)涇渭.SPSS二次開發(fā)應(yīng)用框架設(shè)計\[D\].蘭州: 蘭州商學(xué)院, 2008.
\[3\]石芮,侯戰(zhàn)友.使用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.
責(zé)任編輯(責(zé)任編輯:杜能鋼)