本系列文章旨在用简短的篇幅和精炼的语言,帮助已经有一定软件编程语言基础(比如C/C++或者 Java)的同学平滑过渡到SAS这种专门为数据处理,分析和报表而发明的第四代计算机语言,从而实现从屌丝码农到数据科学家的华丽转身。
SAS是英文Statistical Analysis System 的简称。首先SAS作为一家企业,它是一家由 James Goodnight和 John Sall 成立于1976年,总部位于美国北卡罗来纳州的长青藤软件公司。SAS是全球商业分析软件和服务的领导者,商业智能行业的最大独立供应商。
SAS 作为一种软件系统,它以提供“知的力量”(The Power to Know®)为己任,向全球各行各业提供全面的数据分析软件技术,包括统计分析、趋势预报、预测模型和优化。
SAS 作为一种计算机语言,是专门为数据处理和统计分析而设计的第四代计算机编程语言,主要面向数据操作,分析和报告。SAS自成立40多年来一直在帮助用户将各种数据转化为知识与智慧,发掘企业数据的商业价值。
在开始学习SAS编程之前,有必要了解一下SAS 计算服务的三大核心模块:SAS 语言,SAS 引擎,数据库服务
SAS 语言
用于编写SAS 程序,主要由一系列面向数据操作和分析的代码构成,语言元素主要包括:
1) SAS 宏(SAS Macro):包括宏变量和宏函数,实现SAS代码重用,减少重复代码。
2) 数据步(DATA Step):负责数据读入,数据处理并创建SAS 能理解的数据表示(数据集和数据列)。
3) 过程步(PROC Step):负责对数据进行分析,完成各种统计功能和图表功能等。
SAS 语言是跨平台的编程语言,编写好的SAS 程序可以运行在各种主机架构的Linux、Unix、Windows、甚至IBM 大型主机上。SAS 运行环境就像JVM或CLR环境,提供平台无关的执行环境;某种意义上,SAS 公司比Java还早(1985-1989)提出革命性的“主机无关的可移植层”概念,并在其SAS运行环境(内部称为MVA架构:Multi-Vendor Architecture)使用至今。
SAS运行环境包括一个称为输出传送系统(Output Delivery System,简称ODS)的部分,用于管理SAS 程序的输出(有点类似其他编程语言的I/O),ODS支持三种SAS格式的目标(LISTING, OUTPUT,DOCUMEN)和多种第三方格式目标(HTML,PRINTER,MARKUP,RTF),用户也可以自定义模板输出,控制分析结果的形态。
SAS引擎
SAS 库引擎(SAS Library Engines)和远程库服务(Remote Library Services)让用户在SAS 代码中可以非常方便地访问外部数据结构、或存储于远程计算机平台(比如各种数据库)的数据。SAS 引擎可以在不同的 SAS 服务器中工作:
1) 工作区服务器(Workspace Server):SAS 代码每次提交本服务器运行,都会新建一个SAS 运行环境(对应操作系统的一个进程),称为SAS会话。
2) 存储过程服务器(Stored Process Server):SAS 代码每次提交本服务器运行,会共享SAS作为服务启动时建立的那个SAS会话。
3) 连接服务器(SAS/Connect Server):可以让客户端机器在服务端机器上充分利用资源运行 SAS 程序处理结果,构建“SAS到SAS”的客户端/服务区环境。
4) 网格服务器(Grid Server):SAS应用服务器上用于桥接SAS 应用和SAS网格环境的逻辑服务器,实现将繁重的计算作业分配到网格环境上进行并行执行。
SAS 引擎对用户而言屏蔽了数据访问和执行环境的细节,让用户通过SAS 库(SAS Library)引用需要分析的数据而无需关注存储格式和数据库类型,以及计算资源的形态。因此,SAS 分析代码可以变得非常清晰可重用。
数据库服务
1) 数据访问(Data Access):对于各种各样的数据存在形态和数据库,SAS都提供对应的数据访问服务来保证对特定数据的访问,SAS支持从PC文件到关系型数据库、从分布式文件系统HDFS到云端的数据访问。
2) 库内处理(In-Database Processing):SAS为改进系统性能,减少数据在数据库和SAS 之间的移动,加速分析的开发和部署而设计的一种高性能分析平台技术;它采用更加智能化的SQL来增强所选的分析过程,在一些关键用例上将SAS 函数直接部署到数据库内部。
3) 内存分析(SAS® In-Memory Analytics):随着大数据时代的到来,高级分析和可视化分析呼唤对海量数据的大规模并发访问。SAS运行在分布式计算环境(而不是单个机器)的LASR 分析服务器(LASR® Analytics Server)能够预先将海量数据加载到内存中,提供安全,无状态的只读操作,从而实现对海量数据的分析在秒级完成。2016年,SAS再次创新性地推出了SAS 云分析服务(简称:CAS - Cloud Analytics Services), CAS是可以SAS运行在云端的、最新的数据管理和分析运行环境,它可以直接对存储在云端(比如亚马逊云)的数据进行能够分析处理。
SAS网格计算(SAS® Grid Computing)、库内计算(SAS® In-Database)和内存计算(SAS® In-Memory Analytics)是SAS高性能分析平台传统上的三大支柱;近40年来,不管计算环境如何变化,SAS一直致力于将最好的分析技术带给用户,为客户提供从数据、信息到知识、乃至智能的“知的力量——The Power To Know™”。
有了以上这些基础,就让我们以最简单的SAS程序Hello World结束本章,在下一章开始我们的SAS 编程之旅!
data _null_;
put "THE POWER TO KNOW";
put "-- Since 1976 --";
run;