![洞察大数据价值:SAS编程与数据挖掘](https://wfqqreader-1252317822.image.myqcloud.com/cover/711/31251711/b_31251711.jpg)
2.1 SAS逻辑库
逻辑库是SAS编程语言的一个重要知识点,是数据步和过程步读取数据集或关系数据库中的表或存储路径下对应文件的桥梁。本节主要讲解逻辑库定义和创建逻辑库的两种方式以及逻辑库引用的方法,通过实例把理论和实践结合讲解。
2.1.1 逻辑库定义
SAS逻辑库就相当于给一个人起的名字,是一个逻辑标识,真正对应的是指向的物理文件路径。逻辑库是SAS用来指向数据集对应的物理路径,用来告诉SAS数据集或数据文件存储到什么位置的一个逻辑标识。通过逻辑库来告诉SAS系统数据集是存在哪个文件夹、软盘或CD的物理位置下。引用对应逻辑库下的数据文件只需用逻辑库名.(中间加个点)存储目录下的数据集名就可以直接引用。如图2-1所示,SAS目前显示出来的逻辑库有Maps、Sashelp、Sasuser和Work等。主机路径名这列显示了逻辑库对应的物理位置。这上面的逻辑库是SAS自带逻辑库。在生成一个数据集时如果没有指定逻辑库,SAS默认保存在临时逻辑库Work下面,当SAS结束会话时,退出SAS系统时Work逻辑库的数据集会被自动删除,不保存数据集。人为建立的逻辑库是永久逻辑库,退出会话后永久逻辑库所对应目录下的数据集仍保留在对应物理位置。
●Sashelp逻辑库:存储SAS帮助的数据集数据的永久逻辑库,是只读逻辑库。
●Sasuser逻辑库:存储用户文件的逻辑库。
●Work临时逻辑库:存储临时数据集,退出会话后数据集就不再存在。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/23_01.jpg?sign=1738902407-4GTB4916B12U5qMrk0MfPPOfgEF6g0aL-0-71e8cd1300e18e49b8b84cea337c8000)
图2-1 逻辑库窗口
2.1.2 语法定义逻辑库
SAS命令定义逻辑库语法如下。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/23_02.jpg?sign=1738902407-AC1Hqf1KEMC9WEA0GeI5w6pcPLsdgzA4-0-39bf5b2d302dd10afeefeb82f252166b)
【语法解读】
●LIBNAME:定义逻辑库的关键字。
●逻辑库名:给逻辑库起的名字,长度不能超过8个字符。
●引擎:可以选择项(缺失时为默认),如果连接其他引擎(如ORACLE,DB2,ACCESS等数据库引擎)就要加上这个引擎名告诉SAS连这个库引擎。
●物理路径:数据集或数据文件存储的位置。
●;(分号):结束符标识。
【例2.1】建立逻辑库名,存储目录为d:\sastest。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/23_03.jpg?sign=1738902407-ByYkUqqgOypFEcRfBuOsp1JU7d4RltF8-0-fa6dfc40f6cadafa85cfa80c415a6192)
【程序解读】
ycr是自己定义的逻辑库名;'d:\sastest'是存储数据集的文件路径。
编辑器中输入建立逻辑库的命令语句,按〈F8〉键或工具栏“小人”图标运行程序,日志显示窗口如图2-2所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/23_04.jpg?sign=1738902407-vtWECQUww3XBzXvrtljNiJsb4ZzZotfB-0-448c7806fc0796dab6283788061952ef)
图2-2 日志显示窗口
通过逻辑库ycr建立了和存储路径d:\sastest之间的联系,通过引用逻辑库名就可以调用d:\sastest存储的数据集或文件。当前的d:\sastest目录下,逻辑库ycr对应的数据集如图2-3所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/24_01.jpg?sign=1738902407-Og6sYvDDVBC74H1itowajV45GWONuNoI-0-aae607598179a77d30753df57ec6cfb0)
图2-3 逻辑库ycr对应的数据集
【例2.2】通过逻辑库实现与ORACLE数据库的连接。数据库用户名是chiran,密码是chiran,数据库实例是orcl。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/24_02.jpg?sign=1738902407-PrkO0ESEw3udsOEdshRMy5YgODDjZ9UQ-0-55adea96282199f8c6d9a1a580e90185)
【程序解读】
load是定义的逻辑库名;oracle是连接的数据库引擎;User=表示登录数据库的用户名;password=表示登录数据库的密码;path=表示登录的数据库实例。
编辑器中输入上面建立逻辑库的语句,按〈F8〉键运行后日志窗口显示如图2-4所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/24_03.jpg?sign=1738902407-lLckQKsVtD6eI2SKWxlpzEi89zRKak9Y-0-d5fb13520f1391235fb87e5a65176f93)
图2-4 日志窗口
例如,有一条河,河的一边是SAS,另一边是ORACLE,河上建造的桥就相当于逻辑库,它建立了SAS与ORACLE数据库连接的通道,使SAS数据与ORACLE数据库中的数据可以互相交换。数据库中的表直接通过逻辑库就可以引用到SAS环境中来,如图2-5所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/25_01.jpg?sign=1738902407-hj01Z2vOBkBhEhYq67vI4QYbsmR21YYW-0-ad3445679855568580f06fd56588e29e)
图2-5 Load逻辑库窗口
【注意】如果连接的是其他库,就把ORACLE库引擎换了,如DB2、Sybase和ODBC等。要学会举一反三,学会探索性思考,这里只是举例说明。
2.1.3 菜单栏定义逻辑库
菜单栏创建逻辑库的步骤如下。
1)选择工具栏“视图”下拉菜单项里面的“SAS资源管理器”,如图2-6所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/25_02.jpg?sign=1738902407-YqfzHX9XRi4odK92zNqa8tr72Ths4hGk-0-0cf46a60b16c4290244745fa18ed4b06)
图2-6 SAS资源管理器窗口
2)把鼠标放到逻辑库上,右键单击选择“新建”,如图2-7所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/26_01.jpg?sign=1738902407-5WOvhJCRP4WGw6DMGCC7S22COZCsSMuJ-0-fbb812fec6126573d3dfed49fccc0134)
图2-7 “新建”命令
3)单击“新建”打开“新建逻辑库”对话框,在“名称”文本框输入逻辑库名,此处假设建立的逻辑库名为test,“引擎”选择对应的引擎,如果不能确定应该选择哪个引擎,就选择“默认”引擎,让SAS系统自动选择合适的引擎。如果想运行SAS时就启动此逻辑库,则勾选“启动时启用”复选框,如图2-8所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/26_02.jpg?sign=1738902407-zQDI96SYTVAUDKo0L5jntCfEiSmHBBXc-0-f163cfe38c6354b5b1105c001615af7f)
图2-8 “新建逻辑库”对话框(1)
逻辑库信息下面对应的“路径”可以通过“浏览”来选择存储的物理位置。此处引擎为“默认”,路径为“D:\sastest”,单击“确定”即可,如图2-9所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/27_01.jpg?sign=1738902407-D753z96MXfuNE1eSkaJ1bo3e6QIdhfAX-0-b456f1e114d9725fe9f591436564ff3c)
图2-9 “新建逻辑库”对话框(2)
【提示】如果选择“引擎”为ORACLE,在“逻辑库信息”下面出现的输入项说明如下。
●用户名:输入连接ORACLE数据库的用户名。
●密码:输入登录ORACLE数据库的密码。
●路径:输入连接ORACLE数据库的实例名,即连接ORACLE哪个数据库。
上面的选项填好,单击“确定”,逻辑库就建立好了,这样SAS就可以调用ORACLE数据库里的数据了。通过逻辑库实现了SAS与数据库的交互。这里逻辑库就相当于一个桥,可以通过它来访问数据库里的数据,如图2-10所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/27_02.jpg?sign=1738902407-dVrDPW6ZPBqhHs2XZbxTOnaaf10JKVSM-0-8de7858edb614054d248d12159462472)
图2-10 选择ORACLE引擎
2.1.4 逻辑库引用
建立逻辑库的目的就是引用逻辑库所对应的数据集。在数据步或过程步中通过逻辑库来调用所需要的数据集。
语法格式:
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/28_01.jpg?sign=1738902407-ji1WP78ymBISw9JFl3RB9OUJNf4FIrAn-0-fec820554fa183affa75390bc1b92e64)
【语法解读】
中间用英文状态下的点分隔。引用非临时逻辑库的数据集使用两级命名方式;引用Work(临时逻辑)的数据集时,可以直接使用数据集名。
【例2.3】打印输出xw逻辑库下的数据集student,保留字段id、name和score。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/28_02.jpg?sign=1738902407-av74eYnAYP7KBHPDHIt4T750mLpaF7oG-0-4dabcf584929abb7fc12aaf71b0ff8dc)
【程序解读】
●LIBNAME指定创建逻辑库为xw,对应物理路径为“d:\sastest”。
●DATA数据步创建数据集student,通过逻辑库两级命名方式存储到xw逻辑库中。
●调用SAS内部的PRINT过程,打印数据集student信息,KEEP=语句指定要打印数据中的变量名。
输出结果显示如图2-11所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/28_03.jpg?sign=1738902407-YTUCGVQp4qJEI6VCaWCIgzrhnP1g1Tn7-0-3c15ecc9f8d7753fc662e6cc3f7a5589)
图2-11 输出结果显示
2.1.5 删除逻辑库
删除逻辑库就如同删除一个文件夹下的文件一样,其步骤如下。
1)选择“视图”下拉菜单下的“SAS资源管理器”。
2)在打开的“SAS资源管理器”窗口找到“逻辑库”目录下要删除的逻辑库名。
3)单击右键,从弹出来的下拉列表框中选择“删除”,如图2-12所示。
![](https://epubservercos.yuewen.com/A26672/16923818205021806/epubprivate/OEBPS/Images/29_01.jpg?sign=1738902407-2FeJm14HlllxwdW9U89VJHIpUBfYaoSA-0-2490c7494fbe6e1b73f8b70834160bc2)
图2-12 删除逻辑库窗口
【提示】删除逻辑库只是删除了逻辑库指向的物理路径的指针,此目录下的数据文件依然存在,就相当于把一个桥给拆除了,但桥两边的东西依然存在一样。