- 洞察大數(shù)據(jù)價(jià)值:SAS編程與數(shù)據(jù)挖掘
- 楊池然 劉璐
- 2211字
- 2020-06-04 15:26:42
2.1 SAS邏輯庫
邏輯庫是SAS編程語言的一個(gè)重要知識(shí)點(diǎn),是數(shù)據(jù)步和過程步讀取數(shù)據(jù)集或關(guān)系數(shù)據(jù)庫中的表或存儲(chǔ)路徑下對(duì)應(yīng)文件的橋梁。本節(jié)主要講解邏輯庫定義和創(chuàng)建邏輯庫的兩種方式以及邏輯庫引用的方法,通過實(shí)例把理論和實(shí)踐結(jié)合講解。
2.1.1 邏輯庫定義
SAS邏輯庫就相當(dāng)于給一個(gè)人起的名字,是一個(gè)邏輯標(biāo)識(shí),真正對(duì)應(yīng)的是指向的物理文件路徑。邏輯庫是SAS用來指向數(shù)據(jù)集對(duì)應(yīng)的物理路徑,用來告訴SAS數(shù)據(jù)集或數(shù)據(jù)文件存儲(chǔ)到什么位置的一個(gè)邏輯標(biāo)識(shí)。通過邏輯庫來告訴SAS系統(tǒng)數(shù)據(jù)集是存在哪個(gè)文件夾、軟盤或CD的物理位置下。引用對(duì)應(yīng)邏輯庫下的數(shù)據(jù)文件只需用邏輯庫名.(中間加個(gè)點(diǎn))存儲(chǔ)目錄下的數(shù)據(jù)集名就可以直接引用。如圖2-1所示,SAS目前顯示出來的邏輯庫有Maps、Sashelp、Sasuser和Work等。主機(jī)路徑名這列顯示了邏輯庫對(duì)應(yīng)的物理位置。這上面的邏輯庫是SAS自帶邏輯庫。在生成一個(gè)數(shù)據(jù)集時(shí)如果沒有指定邏輯庫,SAS默認(rèn)保存在臨時(shí)邏輯庫Work下面,當(dāng)SAS結(jié)束會(huì)話時(shí),退出SAS系統(tǒng)時(shí)Work邏輯庫的數(shù)據(jù)集會(huì)被自動(dòng)刪除,不保存數(shù)據(jù)集。人為建立的邏輯庫是永久邏輯庫,退出會(huì)話后永久邏輯庫所對(duì)應(yīng)目錄下的數(shù)據(jù)集仍保留在對(duì)應(yīng)物理位置。
●Sashelp邏輯庫:存儲(chǔ)SAS幫助的數(shù)據(jù)集數(shù)據(jù)的永久邏輯庫,是只讀邏輯庫。
●Sasuser邏輯庫:存儲(chǔ)用戶文件的邏輯庫。
●Work臨時(shí)邏輯庫:存儲(chǔ)臨時(shí)數(shù)據(jù)集,退出會(huì)話后數(shù)據(jù)集就不再存在。

圖2-1 邏輯庫窗口
2.1.2 語法定義邏輯庫
SAS命令定義邏輯庫語法如下。

【語法解讀】
●LIBNAME:定義邏輯庫的關(guān)鍵字。
●邏輯庫名:給邏輯庫起的名字,長(zhǎng)度不能超過8個(gè)字符。
●引擎:可以選擇項(xiàng)(缺失時(shí)為默認(rèn)),如果連接其他引擎(如ORACLE,DB2,ACCESS等數(shù)據(jù)庫引擎)就要加上這個(gè)引擎名告訴SAS連這個(gè)庫引擎。
●物理路徑:數(shù)據(jù)集或數(shù)據(jù)文件存儲(chǔ)的位置。
●;(分號(hào)):結(jié)束符標(biāo)識(shí)。
【例2.1】建立邏輯庫名,存儲(chǔ)目錄為d:\sastest。

【程序解讀】
ycr是自己定義的邏輯庫名;'d:\sastest'是存儲(chǔ)數(shù)據(jù)集的文件路徑。
編輯器中輸入建立邏輯庫的命令語句,按〈F8〉鍵或工具欄“小人”圖標(biāo)運(yùn)行程序,日志顯示窗口如圖2-2所示。

圖2-2 日志顯示窗口
通過邏輯庫ycr建立了和存儲(chǔ)路徑d:\sastest之間的聯(lián)系,通過引用邏輯庫名就可以調(diào)用d:\sastest存儲(chǔ)的數(shù)據(jù)集或文件。當(dāng)前的d:\sastest目錄下,邏輯庫ycr對(duì)應(yīng)的數(shù)據(jù)集如圖2-3所示。

圖2-3 邏輯庫ycr對(duì)應(yīng)的數(shù)據(jù)集
【例2.2】通過邏輯庫實(shí)現(xiàn)與ORACLE數(shù)據(jù)庫的連接。數(shù)據(jù)庫用戶名是chiran,密碼是chiran,數(shù)據(jù)庫實(shí)例是orcl。

【程序解讀】
load是定義的邏輯庫名;oracle是連接的數(shù)據(jù)庫引擎;User=表示登錄數(shù)據(jù)庫的用戶名;password=表示登錄數(shù)據(jù)庫的密碼;path=表示登錄的數(shù)據(jù)庫實(shí)例。
編輯器中輸入上面建立邏輯庫的語句,按〈F8〉鍵運(yùn)行后日志窗口顯示如圖2-4所示。

圖2-4 日志窗口
例如,有一條河,河的一邊是SAS,另一邊是ORACLE,河上建造的橋就相當(dāng)于邏輯庫,它建立了SAS與ORACLE數(shù)據(jù)庫連接的通道,使SAS數(shù)據(jù)與ORACLE數(shù)據(jù)庫中的數(shù)據(jù)可以互相交換。數(shù)據(jù)庫中的表直接通過邏輯庫就可以引用到SAS環(huán)境中來,如圖2-5所示。

圖2-5 Load邏輯庫窗口
【注意】如果連接的是其他庫,就把ORACLE庫引擎換了,如DB2、Sybase和ODBC等。要學(xué)會(huì)舉一反三,學(xué)會(huì)探索性思考,這里只是舉例說明。
2.1.3 菜單欄定義邏輯庫
菜單欄創(chuàng)建邏輯庫的步驟如下。
1)選擇工具欄“視圖”下拉菜單項(xiàng)里面的“SAS資源管理器”,如圖2-6所示。

圖2-6 SAS資源管理器窗口
2)把鼠標(biāo)放到邏輯庫上,右鍵單擊選擇“新建”,如圖2-7所示。

圖2-7 “新建”命令
3)單擊“新建”打開“新建邏輯庫”對(duì)話框,在“名稱”文本框輸入邏輯庫名,此處假設(shè)建立的邏輯庫名為test,“引擎”選擇對(duì)應(yīng)的引擎,如果不能確定應(yīng)該選擇哪個(gè)引擎,就選擇“默認(rèn)”引擎,讓SAS系統(tǒng)自動(dòng)選擇合適的引擎。如果想運(yùn)行SAS時(shí)就啟動(dòng)此邏輯庫,則勾選“啟動(dòng)時(shí)啟用”復(fù)選框,如圖2-8所示。

圖2-8 “新建邏輯庫”對(duì)話框(1)
邏輯庫信息下面對(duì)應(yīng)的“路徑”可以通過“瀏覽”來選擇存儲(chǔ)的物理位置。此處引擎為“默認(rèn)”,路徑為“D:\sastest”,單擊“確定”即可,如圖2-9所示。

圖2-9 “新建邏輯庫”對(duì)話框(2)
【提示】如果選擇“引擎”為ORACLE,在“邏輯庫信息”下面出現(xiàn)的輸入項(xiàng)說明如下。
●用戶名:輸入連接ORACLE數(shù)據(jù)庫的用戶名。
●密碼:輸入登錄ORACLE數(shù)據(jù)庫的密碼。
●路徑:輸入連接ORACLE數(shù)據(jù)庫的實(shí)例名,即連接ORACLE哪個(gè)數(shù)據(jù)庫。
上面的選項(xiàng)填好,單擊“確定”,邏輯庫就建立好了,這樣SAS就可以調(diào)用ORACLE數(shù)據(jù)庫里的數(shù)據(jù)了。通過邏輯庫實(shí)現(xiàn)了SAS與數(shù)據(jù)庫的交互。這里邏輯庫就相當(dāng)于一個(gè)橋,可以通過它來訪問數(shù)據(jù)庫里的數(shù)據(jù),如圖2-10所示。

圖2-10 選擇ORACLE引擎
2.1.4 邏輯庫引用
建立邏輯庫的目的就是引用邏輯庫所對(duì)應(yīng)的數(shù)據(jù)集。在數(shù)據(jù)步或過程步中通過邏輯庫來調(diào)用所需要的數(shù)據(jù)集。
語法格式:

【語法解讀】
中間用英文狀態(tài)下的點(diǎn)分隔。引用非臨時(shí)邏輯庫的數(shù)據(jù)集使用兩級(jí)命名方式;引用Work(臨時(shí)邏輯)的數(shù)據(jù)集時(shí),可以直接使用數(shù)據(jù)集名。
【例2.3】打印輸出xw邏輯庫下的數(shù)據(jù)集student,保留字段id、name和score。

【程序解讀】
●LIBNAME指定創(chuàng)建邏輯庫為xw,對(duì)應(yīng)物理路徑為“d:\sastest”。
●DATA數(shù)據(jù)步創(chuàng)建數(shù)據(jù)集student,通過邏輯庫兩級(jí)命名方式存儲(chǔ)到xw邏輯庫中。
●調(diào)用SAS內(nèi)部的PRINT過程,打印數(shù)據(jù)集student信息,KEEP=語句指定要打印數(shù)據(jù)中的變量名。
輸出結(jié)果顯示如圖2-11所示。

圖2-11 輸出結(jié)果顯示
2.1.5 刪除邏輯庫
刪除邏輯庫就如同刪除一個(gè)文件夾下的文件一樣,其步驟如下。
1)選擇“視圖”下拉菜單下的“SAS資源管理器”。
2)在打開的“SAS資源管理器”窗口找到“邏輯庫”目錄下要?jiǎng)h除的邏輯庫名。
3)單擊右鍵,從彈出來的下拉列表框中選擇“刪除”,如圖2-12所示。

圖2-12 刪除邏輯庫窗口
【提示】刪除邏輯庫只是刪除了邏輯庫指向的物理路徑的指針,此目錄下的數(shù)據(jù)文件依然存在,就相當(dāng)于把一個(gè)橋給拆除了,但橋兩邊的東西依然存在一樣。
- 大數(shù)據(jù)技術(shù)與應(yīng)用基礎(chǔ)
- 嵌入式系統(tǒng)及其開發(fā)應(yīng)用
- 精通MATLAB神經(jīng)網(wǎng)絡(luò)
- 大數(shù)據(jù)技術(shù)基礎(chǔ)
- 大數(shù)據(jù)專業(yè)英語
- 微型計(jì)算機(jī)控制技術(shù)
- 精通Excel VBA
- VMware Performance and Capacity Management(Second Edition)
- Windows程序設(shè)計(jì)與架構(gòu)
- 最簡(jiǎn)數(shù)據(jù)挖掘
- RPA(機(jī)器人流程自動(dòng)化)快速入門:基于Blue Prism
- 系統(tǒng)安裝與重裝
- Implementing Oracle API Platform Cloud Service
- 電子設(shè)備及系統(tǒng)人機(jī)工程設(shè)計(jì)(第2版)
- Mastering MongoDB 3.x