python 访问sas 逻辑库_SAS岩论 | 在Jupyter Notebook中使用SAS
原标题: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相关推荐
- 【Python】(2022.07.03)在Jupyter Notebook中调用Stata17并绘制3D图展示回归结果的边际效应
文章目录 背景介绍: 实现结果 安装过程 安装stata_setup包 检查是否安装成功 常见问题 调用stata 常见问题 1. stata安装在哪 2. 返回报错:TypeError: init( ...
- 如何在Jupyter notebook中运行python的.py文件,以及ipynb文件与py文件的相互转化
文章目录: 1 Jupyter notebook中%开头的一些方法使用 1.1 运行python的py文件 1.2 加载本地文件 2 ipynb文件与py文件的相互转化 2.1 jupyter not ...
- Jupyter notebook 中使用pip install安装第三方Python包
一句话概括Jupyter notebook pip install(适合比较着急的读者) 使用方式: 在pip install -[Package]前加上一个!即可,比如想要使用pip install ...
- python 数学公式显示_ipython jupyter notebook中显示图像和数学公式实例
1. # 可以使用LaTeX表示数学公式 # 可以使用LaTeX表示数学公式 from IPython.display import Latex Latex(r"$\sqrt{x^2+y^2 ...
- python中两个文件如何互相传参_argparse模块如何在jupyter notebook中用于传参?
作者:于晨晨 研究方向:nlp 发表于公众号:AI技术日常 在python代码文件中,通常需要传参,传参就需要经常使用argparse.使用argparse模块在py文件中是正常的,但是jupyter ...
- Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...
- python非线性最小二乘拟合_非线性函数的最小二乘拟合——兼论Jupyter notebook中使用公式 [原创]...
突然有个想法,利用机器学习的基本方法--线性回归方法,来学习一阶rc电路的阶跃响应,从而得到rc电路的结构特征--时间常数τ(即r*c).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多 ...
- 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 ...
- 使用域名访问远程jupyter_如何设置远程访问的Jupyter Notebook服务器-01(之预备知识:什么是端口号?)...
(这是一篇面向零基础读者的教程) 0.前言 毋容置疑,Jupyter Notebook是统计.数据分析和机器学习的利器,使用起来非常方便和高效. 在上一讲中,我们讨论了如何安装和使用Jupyter N ...
最新文章
- 基因 ID 匹配利器
- JavaScript--fullPage.js插件
- The table(CF226D)
- ykcchf 2013 v2.1101 最新版下载
- 今日奇葩事件,一位不懂技术,却来管理技术团队的领导
- 剖析SQL Server2005 SQLCLR代码安全性
- 马斯克光顾北京包子铺被偶遇 本人盖章:好吃!
- MQTT工作笔记0002---阿里云物联网简介_以及物联网平台下的一些名词
- hadoop2.0初识1.2
- [UWP]涨姿势UWP源码——IsolatedStorage
- supervisor进程守护
- Java集合:HashMap详解(JDK 1.8)
- STM32外设驱动总结(公司项目需要)
- 用idea使用struts和hibernate来实现CRUB的操作
- 六一小学生计算机创新活动总结,2020小学生六一儿童节活动总结
- video 圆角 html,圆形视频和圆角视频的一种实现方式
- 【项目管理/PMP/PMBOK第六版/新考纲】项目资源管理/权力理论/管理方格理论/领导生命周期理论/激励理论/马斯洛需求层次理论/赫兹伯格的双因素理论/X理论和Y理论/弗鲁姆的期望理论
- 股票历史数据-股票历史数据在线查询系统
- 快捷指令|支付宝合集|安卓支付宝shell快捷指令大全
- 计算机原理八字,讲解八字理论
热门文章
- [信息系统安全实验] 实验1.Web安全
- java与flex数据实时交互+blazed
- Starting nodemanagerslocalhost: mv: 无法获取‘/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-nodemanager-ha
- 在html中上传文件,后台获取并进行操作
- 我就是我,颜色不一样的花火...
- 关于跨专业考博以及考博就业相关问题
- 最爱的三毛之《哑奴》
- android自动化解锁,Android唤醒、解锁屏幕代码实例
- 关于H5唤起某APP,未安装调起下载那些事
- 好教程推荐系列:《Qt 5.9 C++开发指南》