【02】資料管理|資料集與資料館的基礎

資料集與資料館
組成:資料集>資料館
資料館能用來容納許多資料集,資料館可以是SAS檔案也可以是來自其他資料庫的檔案

資料集 & 資料館

組成:資料集>資料館

資料館能用來容納許多資料集資料館可以是SAS檔案也可以是來自其他資料庫的檔案


資料集 – Dataset

這邊所講的資料集都是指SAS Dataset,而它又可以分為兩種類型,分別是SAS File與SAS Views:

補充:SAS Dataset VS External Dataset

SAS Dataset

SAS能辨別、格式化紀錄資料的資料集

例:SAS File、SAS Views

External Dataset

不屬於SAS DAtaset的資料都屬於External Dataset

例:Csv, Txt等


SAS File

一般我們最常接觸與使用的就是SAS File,也是在本機見到的實體檔案,這個檔案包含觀察值、資料集與變數屬性(Descriptive information)。

依照檔案是否格式化分為2種:

Native SAS Data file

以SAS格式儲存的檔案,副檔名為.sas7bdat

Interface SAS Data file

非以SAS格式儲存的檔案,比如DB2、SPSS等其他類型,當連結資料館後,SAS會將該類檔案識別為Native SAS Data file

SAS View

指向某個資料集的虛擬資料集。

簡單來說,是用來連結、查詢某個資料集,僅紀錄著資料集與變數屬性。

在使用上與SAS File無太大差異,差別在於SAS View並不會將實際觀察值儲存到資料集之中。


資料集命名規則

  1. 需以英文字母或底線開頭,大小寫不拘
  2. 後面可以是英文字母、底線或數字混合
  3. 長度最大為32 Bytes
  4. 不可使用_NULL_、_DATA_、_LAST_命名,這些屬於SAS資料集的保留名稱

資料館 – Library

包含資料集的一個集合,依照性質可以分為永久資料館與暫時資料館

就是會一直存在的資料館(OK,有講等於沒講…)

每一次關閉SAS時,並不會影響到存放在永久資料館的資料集,因為永久資料館指向的是實體路徑與該路徑下的資料集。

但下次開啟SAS時會發現資料館不見,這時候只需要再重新連結相同路徑的資料館就OK了!

SAS暫時建立的資料館

每當我們打開一個SAS時(稱之為session),系統會自動生成一個暫時資料館,命名為WORK。

當我們關閉SAS時,WORK這個暫時資料館裡面的資料集並沒有真正的被儲存到實體路徑,雖然下次打開SAS時還是會看到WORK,但此時的WORK已經不是上次的WORK。


如何建立與連結資料館?

這邊分享兩種語法來連結資料館,分別是Libname敘述句與SQL的Connect to方法,實際上的細節仍然需要依照所關聯的資料集與環境來進行調整。

Libname敘述句

Libname Test "physical-path";

將SAS資料館與實體路徑的SAS資料集進行關聯或是取消關聯。

簡單來說就是搭一座橋,讓兩邊可以互通。

可以藉由調整參數決定要關聯前面所提告的Native SAS Data file或是Interface SAS Data file。

上面這是一段最簡單的Libname敘述句,用來關聯實體路徑下的Native SAS Data file。

SQL Pass-Through Facility – Connect to

Proc SQL;
  connect to Oracle as ORI
    (user=Admin pw=test123 path="Test" connection=global);
quit;

Connect to與Libname敘述句的差別在於它只能關聯存放Interface SAS Data file的實體路徑,而不能關聯Native SAS Data file。

上方這一段是用來關聯Oracle的簡單語法:

  • 第1、4行:因為此語法為Proc SQL中的一環,所有這2行是必須的
  • 第2~3行:後半段因關聯的資料庫與環境而異,需要填入不同參數

資料館命名規則

  1. 需要以英文字母或底線開頭,大小寫不拘
  2. 後面可以是英文字母、底線、數字混合
  3. 長度最大為8 Bytes
  4. 不可使用sashelp、sasmsg、sasuser、work,這些為SAS資料館的保留名稱

資料集與資料館命名結構

前面介紹了資料館與資料館,最後就來介紹它們的命名結構吧!

SAS資料集是由3個命名層級構成的,分別是Library、Dataset、Member Type,中間以「點(DOT)」間隔

相信大家現在對於Library、Dataset已經有相當的瞭解了,那麼Member Type是什麼呢?

其實它是SAS一種內建用來辨別的標籤,判斷這個資料集屬於哪一種類型。

常見的有:Data、View、CATALOG、INDEX等。

但一般來說我們在程式碼使用Dataset時,不需要特別寫上Member Type這個層級,在特殊場合下才會使用到。

如果是使用資料集的資料時,只需要寫出Library與Dataset這2個層級就好。

One-Level Names

僅由Dataset所組成的命名

其實它骨子是Two-Level Names,Library是WORK暫時資料館

Two-Level Names(WORK)

與上面寫法有相同的結果,兩種都適用

Two-Level Names

由Library與Dataset所組成的命名

當使用大量不同的資料館時,建議都以Two-Level Names命名,能有效辨別程式中不同區塊所使用的資料館


參考資料:

Definition of a SAS Data Set

What is a SAS Library?

謝謝閱讀這篇文章,有問題歡迎在下方留言

Categories: Basic