首页 存档 技术 查看内容

从程序员到数据科学家:SAS 编程基础(1)

2018-3-30 13:00 |来自: 互联网 476 0

摘要: 分析行业资深专家,大数据可视化分析负责人SAS北京研发中心商业智能和可视化分析产品部技术总监巫银良先生,分享如何从程序员成为一名数据科学家,想成为数据达人吗?快来围观吧! 文章将以系列连载的形式展现,旨 ...

分析行业资深专家,大数据可视化分析负责人SAS北京研发中心商业智能和可视化分析产品部技术总监巫银良先生,分享如何从程序员成为一名数据科学家,想成为数据达人吗?快来围观吧!




文章将以系列连载的形式展现,旨在用简短的篇幅和精炼的语言,帮助已经有一定软件编程语言基础(比如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 引擎和数据库服务:


1
SAS 语言


用于编写 SAS 程序,主要由一系列面向数据操作和分析的代码构成,语言元素主要包括:


  • SAS 宏(SAS Macro):包括宏变量和宏函数,实现 SAS 代码重用,减少重复代码。

  • 数据步(DATA Step):负责数据读入,数据处理并创建 SAS 能理解的数据表示(数据集和数据列)。

  • 过程步(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,DOCUMENT)和多种第三方格式目标(HTML,PRINTER,MARKUP,RTF),用户也可以自定义模板输出,控制分析结果的形态。


2
SAS 引擎


SAS 库引擎(SAS Library Engines)和远程库服务(Remote Library Services)让用户在 SAS 代码中可以非常方便地访问外部数据结构、或存储于远程计算机平台(比如各种数据库)的数据。SAS 引擎可以在不同的 SAS 服务器中工作:


  • 工作区服务器(Workspace Server)SAS 代码每次提交本服务器运行,都会新建一个 SAS 运行环境(对应操作系统的一个进程),称为 SAS 会话。

  • 存储过程服务器(Stored Process Server)SAS 代码每次提交本服务器运行,会共享 SAS 作为服务启动时建立的那个 SAS 会话。

  • 连接服务器(SAS/Connect Server):可以让客户端机器在服务端机器上充分利用资源运行 SAS 程序处理结果,构建“ SAS 到 SAS ”的客户端/服务区环境。

  • 网格服务器(Grid Server):SAS 应用服务器上用于桥接 SAS 应用和 SAS 网格环境的逻辑服务器,实现将繁重的计算作业分配到网格环境上进行并行执行。


SAS 引擎对用户而言屏蔽了数据访问和执行环境的细节,让用户通过 SAS 库(SAS Library)引用需要分析的数据而无需关注存储格式和数据库类型,以及计算资源的形态。因此,SAS 分析代码可以变得非常清晰可重用。


3
数据库服务


  • 数据访问(Data Access):对于各种各样的数据存在形态和数据库,SAS 都提供对应的数据访问服务来保证对特定数据的访问,SAS 支持从PC文件到关系型数据库、从分布式文件系统HDFS到云端的数据访问。

  • 库内处理(In-Database Processing):SAS 为改进系统性能,减少数据在数据库和SAS 之间的移动,加速分析的开发和部署而设计的一种高性能分析平台技术;它采用更加智能化的SQL来增强所选的分析过程,在一些关键用例上将 SAS 函数直接部署到数据库内部。

  • 内存分析(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;


本文作者:巫银良,分析行业资深专家,大数据可视化分析负责人, SAS 北京研发中心商业智能和可视化分析产品部技术总监,资深商业智能技术专家。


感谢巫银良先生对本文内容的支持,也欢迎大家积极投稿,与小伙伴分享您独特得见解和卓越的技术。投稿邮箱:[email protected]



长按二维码,可阅读原文


关于更多SAS干货资料,您可以阅读:

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除


路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部