陳貞
(莆田學(xué)院電子信息工程系,福建莆田351100)
在移動(dòng)通信網(wǎng)絡(luò)優(yōu)化中,經(jīng)常需要獲取掉話率、擁塞率、接通率等相關(guān)指標(biāo),以便及時(shí)了解網(wǎng)絡(luò)的運(yùn)行狀況,并采取相應(yīng)的處理措施.指標(biāo)提取操作一般是通過(guò)執(zhí)行SQL腳本或在網(wǎng)管系統(tǒng)里通過(guò)圖形窗口定制來(lái)進(jìn)行,并對(duì)獲得的網(wǎng)管指標(biāo)進(jìn)行分類統(tǒng)計(jì),以適應(yīng)不同的維護(hù)需求.有時(shí)需要了解各區(qū)縣或局部區(qū)域的指標(biāo)情況,則要么修改SQL腳本,要么進(jìn)行繁瑣的人工后期處理,來(lái)獲得相應(yīng)的區(qū)域性指標(biāo).本文通過(guò)引入Excel VBA,并通過(guò)Visual Basic調(diào)用Excel宏的方法,來(lái)自動(dòng)地統(tǒng)計(jì)獲取區(qū)域性指標(biāo),避免了繁瑣的重復(fù)性工作,極大地提高了工作效率.
GSM移動(dòng)通信網(wǎng)絡(luò)結(jié)構(gòu)中,一個(gè)移動(dòng)業(yè)務(wù)交換中心(MSC)包含多個(gè)基站控制器(BSC),一個(gè)BSC包含多個(gè)小區(qū)(CELL),BSC可以用BSC名稱(BSCNAME)來(lái)標(biāo)識(shí),小區(qū)可以用小區(qū)標(biāo)識(shí)(CELLID)來(lái)標(biāo)識(shí),在同一個(gè)地市內(nèi),小區(qū)標(biāo)識(shí)是唯一的.
假定某地市包含3個(gè)區(qū)域,分別是區(qū)域A、區(qū)域B、區(qū)域C,各區(qū)域包含的BSC如表1所示,其中BSC4跨越區(qū)域B和區(qū)域C.
現(xiàn)需取得各區(qū)域每天忙時(shí)的整體性指標(biāo),以評(píng)估各區(qū)域的整體網(wǎng)絡(luò)情況.在用SQL腳本獲取區(qū)域性整體指標(biāo)時(shí)有三種方法,方法一是提取區(qū)域指標(biāo)時(shí)在SQL語(yǔ)句的WHERE條件中限定區(qū)域范圍.
SQLSELECT語(yǔ)法為[1-2]:
SELECT列名稱,FROM表名稱,WHERE條件.
3個(gè)區(qū)域的指標(biāo)用SELECT語(yǔ)句簡(jiǎn)化表示為:
SELECT指標(biāo)名稱,FROM表名稱,WHERE BSCNAME IN('BSC1')----區(qū)域A
SELECT指標(biāo)名稱,FROM表名稱,WHERE BSCNAME IN('BSC2','BSC4')----區(qū)域B
SELECT指標(biāo)名稱,FROM表名稱,WHERE BSCNAME IN('BSC3','BSC4')----區(qū)域C
顯然按上述方法取出的區(qū)域B和區(qū)域C的指標(biāo)是不準(zhǔn)確的,因?yàn)閰^(qū)域B和區(qū)域C各包含了BSC4的部分小區(qū).當(dāng)其中一個(gè)區(qū)域包含的BSC4下的小區(qū)很少或很多時(shí),得出的區(qū)域指標(biāo)較準(zhǔn),當(dāng)兩區(qū)域均包含相當(dāng)數(shù)量的BSC4下的小區(qū)時(shí),得出的區(qū)域指標(biāo)就有較大偏差.但該方法使用上最簡(jiǎn)單,可以直接通過(guò)調(diào)用SQL腳本獲取區(qū)域性指標(biāo),無(wú)需后期人工處理.
方法二是直接在SELECT語(yǔ)句的WHERE條件中限定各區(qū)域所歸屬小區(qū).比如獲取區(qū)域B的指標(biāo)的SELECT語(yǔ)句可簡(jiǎn)化表示為:
SELECT指標(biāo)名稱,FROM表名稱,WHERE CELLIDIN(CELLID1,CELLID2,CELLID3,……)
這里括號(hào)內(nèi)的CELLID列表為歸屬區(qū)域B的小區(qū)列表,其他區(qū)域指標(biāo)可用類似取法.這種方法可以獲得精確的區(qū)域指標(biāo),但問(wèn)題在于網(wǎng)絡(luò)小區(qū)經(jīng)常增加或變動(dòng),除非時(shí)刻跟蹤小區(qū)變動(dòng)情況,并且第一時(shí)間修改腳本,否則統(tǒng)計(jì)出來(lái)的指標(biāo)也會(huì)有偏差,而且經(jīng)常修改腳本非常繁瑣.
方法三是不分區(qū)域,先用SQL語(yǔ)句取出全網(wǎng)所有小區(qū)級(jí)的相關(guān)指標(biāo),再導(dǎo)入Excel,通過(guò)人工進(jìn)行分類統(tǒng)計(jì):
SELECT指標(biāo)名稱,FROM表名稱,WHERE BSCNAME IN('BSC1','BSC2','BSC3','BSC4')
該方法可以獲得精確的區(qū)域指標(biāo),而且在SQL腳本的編寫上最簡(jiǎn)單,但后期的人工處理量最大.鑒于此,本文引入Excel VBA方法,通過(guò)VBA的自動(dòng)化處理,避免這部分人工工作量.
表1 各BSC區(qū)域歸屬Tab.1 Regional attribution of BSC
假定需要獲取各區(qū)域的TCH掉話率情況,TCH掉話率公式如下所示.
TCH掉話率=TCH掉話次數(shù)/TCH占用成功次數(shù)×100%
編寫SQL腳本,取得全網(wǎng)各小區(qū)的TCH掉話次數(shù)和TCH占用成功次數(shù),并以Excel的形式輸出結(jié)果,輸出文件命名為CELLKPI_YYYYMMDD.csv.簡(jiǎn)化的SELECT語(yǔ)句如下所示.
SELECT PERIOD,CELLID,TCH掉話次數(shù),TCH占用成功次數(shù)FROM表名稱WHERE BSCNAME IN('BSC1','BSC2','BSC3','BSC4')
此處PERIOD為日期字段,可在WHERE條件中限定指標(biāo)的取值時(shí)間范圍.另外,可通過(guò)VB編程實(shí)現(xiàn)SQL腳本的自動(dòng)調(diào)用.
圖1 小區(qū)模板Fig.1 Cell template
新建一個(gè)Excel工作薄,命名為RegionKPI.xls.在RegionKPI.xls中新建一個(gè)SHEET,命名為TEMPLATE,在工作表TEMPLATE中創(chuàng)建小區(qū)模板,只需CELLID和區(qū)域名兩列,如圖1所示.
當(dāng)網(wǎng)絡(luò)擴(kuò)容等工程導(dǎo)致小區(qū)變動(dòng)時(shí),只需把新增的小區(qū)在模板中添加即可,無(wú)需修改SQL腳本.在模板中添加小區(qū)只能手動(dòng)添加,因?yàn)樾枰獙?duì)新增小區(qū)通過(guò)人工劃分區(qū)域歸屬.當(dāng)小區(qū)變動(dòng)時(shí),小區(qū)模板更新的越及時(shí),統(tǒng)計(jì)出的區(qū)域性指標(biāo)就越準(zhǔn)確.
在RegionKPI.xls中新建一個(gè)SHEET,命名為KPI_FROM,把SQL輸出結(jié)果(即文件CELLKPI_YYYYMMDD.csv)復(fù)制到工作表KPI_FROM中.在Excel VBAProject中相關(guān)實(shí)現(xiàn)代碼如下所示[3-4]:
圖2 原始指標(biāo)Fig.2 Original list ofindicators
圖3 小區(qū)區(qū)域歸屬Fig.3 Regional attribution of cells
在RegionKPI.xls中新建一個(gè)SHEET,命名為RESULT_FROM,在工作表RESULT_FROM內(nèi)用SUMIF函數(shù)設(shè)置公式,即可得各區(qū)域掉話率指標(biāo),如圖4所示.
圖4 區(qū)域指標(biāo)匯總結(jié)果Fig.4 Summary results of regional indicators
使用SUMIF函數(shù)可以對(duì)單元格區(qū)域中符合指定條件的值求和,如單元格C2中的公式如下所示:
SUMIF(KPI_FROM!E:E,RESULT_FROM!B2,KPI_FROM!C:C)/SUMIF(KPI_FROM!E:E,RESULT_FROM!B2,KPI_FROM!D:D)*100
用SUMIF函數(shù)進(jìn)行求和時(shí),用于條件計(jì)算的單元格區(qū)域?yàn)楣ぷ鞅鞬PI_FROM的E列,該列也是公式引用,當(dāng)小區(qū)數(shù)量較多時(shí),公式的嵌套調(diào)用會(huì)造成VBA運(yùn)行很慢,甚至出現(xiàn)“假死”現(xiàn)象.因此,為了提高運(yùn)行速度,可先把工作表KPI_FROM中的內(nèi)容選擇性數(shù)值粘貼到另一張工作表中,再對(duì)這張工作表中的E列進(jìn)行條件計(jì)算.
在工作薄RegionKPI.xls中創(chuàng)建一個(gè)宏,命名為Get_KPI(),把上述相關(guān)Excel VBA代碼寫入該宏.在Visual Basic中通過(guò)如下代碼來(lái)調(diào)用該Excel宏[5]:
把VB代碼編譯成可執(zhí)行文件,通過(guò)WINDOWS操作系統(tǒng)的“任務(wù)計(jì)劃”模塊來(lái)定時(shí)調(diào)用該可執(zhí)行文件,即可實(shí)現(xiàn)無(wú)人工干預(yù)的分區(qū)域指標(biāo)統(tǒng)計(jì)匯總.
本文應(yīng)用Excel VBA并結(jié)合VB對(duì)通信網(wǎng)管指標(biāo)進(jìn)行分區(qū)域自動(dòng)統(tǒng)計(jì)匯總,操作簡(jiǎn)單、運(yùn)行速度快,有助于把網(wǎng)絡(luò)維護(hù)人員從大量重復(fù)性的繁瑣工作中解放出來(lái),減輕了一線維護(hù)人員的日常工作強(qiáng)度,極大地提高了工作效率.同時(shí),該方法也可推廣應(yīng)用于金融、電力、教育等其他行業(yè)的相關(guān)數(shù)據(jù)統(tǒng)計(jì)匯總.
[1] Jason P.Oracle Database 10gSQL開(kāi)發(fā)指南[M].北京:清華大學(xué)出版社,2005.
[2] 張敏.SQL查詢語(yǔ)句優(yōu)化研究[J].現(xiàn)代電子技術(shù),2010(4):152-153.
[3] 周敏.基于Excel+VBA實(shí)現(xiàn)分類匯總的動(dòng)態(tài)管理方法[J].信息系統(tǒng)工程,2010(9):49-50.
[4] 羅剛君.Excel VBA程序開(kāi)發(fā)自學(xué)寶典[M].北京:電子工業(yè)出版社,2009.
[5] 微軟.HowtoRun Macros in Other Office Programs[EB/OL].(2007-01-22)[2011-10-06].http://support.microsoft.com/kb/177760/en-us.