原标题:SAS岩论 | 在Jupyter Notebook中使用SAS

在Jupyter Notebook中使用SAS

Jupyter Notebook目前已成为绝大多数编程人员首选的工具。尤其是学习Python的朋友们,已非常习惯使用它了。我本人也是在学习Python的时候接触到这个工具,边学边做笔记是非常方便的,有关它的优点及功能本文就不再赘述了。作为一个SAS爱好者,也希望有这么一个Web端的工具来方便的写SAS代码、解决问题。

其实,这个问题SAS官方早就为广大SAS爱好者考虑了。早在2016年SAS官方在Github上就发起了开源项目来解决这一问题。经过1年多的广大贡献者的努力开发,目前Notebook已经基本可以和SAS无缝集成了。在Notebook中像使用Python一样来使用SAS。先来看一看运行SAS代码的效果:

废话不再多说,接下来就看如何来实现。以Windows操作系统为例进行说明,只需简单四步即可(Linux系统是类似的)。

第一步,环境准备

安装Anaconda集成环境和SAS软件,其中Anaconda要求Python3;SAS版本要求9.4。当然,你也可以分别安装Jupyter和Python3,但是建议直接安装Anaconda,会省去很多麻烦。也许你会疑惑,为什么需要Python3。这是因为Python在Jupyter Notebook和SAS之间起一个桥梁的作用,Jupyter Notebook中的SAS代码会交给Python,Python负责将代码传递给SAS执行;然后将执行的结果返回给Jupyter Notebook显示(Anaconda和SAS的安装此处就不在赘述)。

第二步,安装SAS_KERNEL

启动Anaconda Prompt,输入命令:

pip install sas_kernel

然后就会自动安装sas_kernel及其相应的依赖包。如下所示:

安装完成后可以输入命令:

jupyter kernelspec list

来检测sas_kernel是否安装成功:

第三部,修改配置文件

找到Anaconda的安装目录,打开sascfg.py文件所在的路径,例如我的路径:

D:ProgramDataAnaconda3Libsite-packagessaspy

在该路径下找到sascfg.py文件,该文件中需要配置连接SAS的信息。可以配置连接本地机器的SAS;也可以配置连接远程机器的SAS Server,无论是Linux Server还是Windows Server都可以。此处就以连接本地SAS为例进行说明。

打开该文件,首先是一大段注释;在这段注释后定义的第一个变量“SAS_config_names”用于指定连接SAS的配置方式,提供了8种方式:default、ssh、iomlinux、iomwin、winlocal、winiomlinux、winiomwin、http。默认为default方式。因为我们需要连接Windows机器本地的SAS,所以需要将SAS_config_names的值修改为“winlocal”。

修改前:

修改后:

接下来找到“winlocal”所在的位置,如下所示:

可以看到winlocal这种方式是通过Java来启动本地的SAS。其中参数classpath的取值cpW(该变量是上文定义的)包含了SAS中众多Jar包的路径,如上图所示。在此处,需要将cpW变量中的5个Jar包的路径修改为自己电脑实际的路径。修改完后如下所示:

注:此处需严格按照自己电脑的SAS安装目录和Anaconda的安装目录来修改。只是修改路径,Jar包的文件名不需要修改。

紧接着将winlocal连接方式中的参数“encoding”的值修改为“euc-cn”。因为这是SAS在Windows下的默认编码方式。如果编码方式不对,中文会出现乱码。修改后如下所示:

第四步,系统环境变量配置

打开系统环境变量设置,在系统的PATH环境变量中增加“sspiauth.dll”文件所在的路径。我个人电脑的路径为:

D:Program FilesSASHomeSASFoundation9.4coresasext

将其添加到PATH环境变量中,如下所示:

可直接搜索“sspiauth.dll”文件来找到自己电脑对应的路径。

至此,配置就基本结束了。接下来,赶紧启动Notebook来进行测试。打开Notebook后,单击New,就可以看到新建SAS程序的选项:

新建一个SAS的Notebook,输入代码进行测试:

注:如果出现问题,请看文末的错误处理。

这样就可以在Notebook中写SAS代码了,跟Python一样,同样有代码提示、语法高亮的功能。或许你可能注意到了,过程步的结果显示了,运行的日志去哪里了?

如果代码运行错误或者没有输出(例如纯DATA步)的话,那么输出就是日志信息。如下:

这样的功能基本上够用了,但是,能够正确运行且有输出结果的代码就不会显示日志了。

扩展:安装SAS日志组件

如果想要像SAS Base一样,随时查看所有程序运行的日志结果也没问题。安装一个Notebook的SAS日志扩展组件就可以了。打开Anaconda Prompt,输入以下命令安装:

jupyter nbextension install --py sas_kernel.showSASLog

运行完毕后,输入以下命令启用SAS日志组件:

jupyter nbextension enable sas_kernel.showSASLog –py

接下来重新启动Jupyter Notebook,并打开一个notebook。可以看到工具栏右侧多了两个工具按钮:

其中左边的工具栏按钮为显示最后一次运行的Cell中SAS代码对应的日志信息;右边的按钮为显示当前notebook所有的SAS代码执行的日志信息。如下:

显示Cell中SAS代码执行的日志:

显示所有的日志信息:

如此一来,该有的功能都有了,就可以在Notebook中像使用Python一样使用SAS了。

错误处理

如果你按照四个步骤配置完成后,运行SAS代码时出现以下错误:

那么说明是本地计算机的Java环境有问题,要么重新安装Java,并配置Java的环境变量;要么直接在sascfg.py配置文件中将Java的路径定义为SAS 9.4私有的Java环境。例如,我电脑的路径如下:

D:Program FilesSASHomeSASFoundation9.4coresasext

修改完如下所示:

注:路径中要用双斜杠。

修改完保存后,重启Jupyter Notebook就可以解决问题了。

扩展:连接SAS Server

如果需要配置连接远程的SAS Server,如连接远程Windows机器的SAS Server,需在sascfg.py中做以下修改:

将SAS_config_names的值改为“wintowin”;

在wintowin连接方式中将参数iomhost的值修改为远程Windows机器的IP地址;将参数encoding的值修改为euc-cn;

将cpW中5个Jar包的路径修改为远程Windows机器中SAS对应的目录。

修改完毕后,启动Notebook,首次运行SAS代码时,会提示输入访问SAS Server的有效SAS用户和密码。如下所示:

有关SAS_KERNEL及相关SAS开源项目的更多说明,请参见Github项目:https://github.com/sassoftware/sas_kernel

题外话

其实,从SAS 9.4开始就有了SAS Studio这个Web端的工具产品,整个界面布局及功能跟EG是类似的,相当于一个Web端的EG。使用起来也是很方便的。

本次的分享到这就结束了,希望能给各位提供一点帮助。更多内容,请持续关注SAS中文论坛——“SAS岩论系列”(虽然,已经很久没有更新了)。

作者:辛岩,从事了多年的SAS数据分析挖掘工作,担任过项目经理、技术顾问、培训讲师等职务,拥有丰富的项目实战经验。

剑指SAS,尽在今朝。欢迎各位技术达人交流,可以长按下面群二维码入SAS中文论坛微信群@Slash,也可以发邮件:slash.xin@hotmail.com。

更多SAS岩论系列文章返回搜狐,查看更多

责任编辑:

python 访问sas 逻辑库_SAS岩论 | 在Jupyter Notebook中使用SAS相关推荐

  1. 【Python】(2022.07.03)在Jupyter Notebook中调用Stata17并绘制3D图展示回归结果的边际效应

    文章目录 背景介绍: 实现结果 安装过程 安装stata_setup包 检查是否安装成功 常见问题 调用stata 常见问题 1. stata安装在哪 2. 返回报错:TypeError: init( ...

  2. 如何在Jupyter notebook中运行python的.py文件,以及ipynb文件与py文件的相互转化

    文章目录: 1 Jupyter notebook中%开头的一些方法使用 1.1 运行python的py文件 1.2 加载本地文件 2 ipynb文件与py文件的相互转化 2.1 jupyter not ...

  3. Jupyter notebook 中使用pip install安装第三方Python包

    一句话概括Jupyter notebook pip install(适合比较着急的读者) 使用方式: 在pip install -[Package]前加上一个!即可,比如想要使用pip install ...

  4. python 数学公式显示_ipython jupyter notebook中显示图像和数学公式实例

    1. # 可以使用LaTeX表示数学公式 # 可以使用LaTeX表示数学公式 from IPython.display import Latex Latex(r"$\sqrt{x^2+y^2 ...

  5. python中两个文件如何互相传参_argparse模块如何在jupyter notebook中用于传参?

    作者:于晨晨 研究方向:nlp 发表于公众号:AI技术日常 在python代码文件中,通常需要传参,传参就需要经常使用argparse.使用argparse模块在py文件中是正常的,但是jupyter ...

  6. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

  7. python非线性最小二乘拟合_非线性函数的最小二乘拟合——兼论Jupyter notebook中使用公式 [原创]...

    突然有个想法,利用机器学习的基本方法--线性回归方法,来学习一阶rc电路的阶跃响应,从而得到rc电路的结构特征--时间常数τ(即r*c).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多 ...

  8. Jupyter lab add kernel Python+Julia+R 【jupyter Notebook 切换Python环境】and【在jupyter Notebook中安装第三方库】

    新增虚拟环境 conda create -n py2 python=2.7 进入python2的环境 conda activate py2 安装python2的内核并应用 python2 -m pip ...

  9. 使用域名访问远程jupyter_如何设置远程访问的Jupyter Notebook服务器-01(之预备知识:什么是端口号?)...

    (这是一篇面向零基础读者的教程) 0.前言 毋容置疑,Jupyter Notebook是统计.数据分析和机器学习的利器,使用起来非常方便和高效. 在上一讲中,我们讨论了如何安装和使用Jupyter N ...

最新文章

  1. 基因 ID 匹配利器
  2. JavaScript--fullPage.js插件
  3. The table(CF226D)
  4. ykcchf 2013 v2.1101 最新版下载
  5. 今日奇葩事件,一位不懂技术,却来管理技术团队的领导
  6. 剖析SQL Server2005 SQLCLR代码安全性
  7. 马斯克光顾北京包子铺被偶遇 本人盖章:好吃!
  8. MQTT工作笔记0002---阿里云物联网简介_以及物联网平台下的一些名词
  9. hadoop2.0初识1.2
  10. [UWP]涨姿势UWP源码——IsolatedStorage
  11. supervisor进程守护
  12. Java集合:HashMap详解(JDK 1.8)
  13. STM32外设驱动总结(公司项目需要)
  14. 用idea使用struts和hibernate来实现CRUB的操作
  15. 六一小学生计算机创新活动总结,2020小学生六一儿童节活动总结
  16. video 圆角 html,圆形视频和圆角视频的一种实现方式
  17. 【项目管理/PMP/PMBOK第六版/新考纲】项目资源管理/权力理论/管理方格理论/领导生命周期理论/激励理论/马斯洛需求层次理论/赫兹伯格的双因素理论/X理论和Y理论/弗鲁姆的期望理论
  18. 股票历史数据-股票历史数据在线查询系统
  19. 快捷指令|支付宝合集|安卓支付宝shell快捷指令大全
  20. 计算机原理八字,讲解八字理论

热门文章

  1. [信息系统安全实验] 实验1.Web安全
  2. java与flex数据实时交互+blazed
  3. Starting nodemanagerslocalhost: mv: 无法获取‘/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-ha
  4. 在html中上传文件,后台获取并进行操作
  5. 我就是我,颜色不一样的花火...
  6. 关于跨专业考博以及考博就业相关问题
  7. 最爱的三毛之《哑奴》
  8. android自动化解锁,Android唤醒、解锁屏幕代码实例
  9. 关于H5唤起某APP,未安装调起下载那些事
  10. 好教程推荐系列:《Qt 5.9 C++开发指南》