使用Python执行SAS存储过程

时间:2018-05-23 15:25:40

标签: python sas sas-stored-process saspy

我知道有一种方法可以通过SAS存储过程Web应用程序调用存储过程,但我想知道是否有一种方法可以直接调用存储过程服务器。

目标是调用一个存储过程,该过程尽可能高效地将数据(通过_webout文件?)传递给python。因此,它可以通过跳过SAS Web应用程序来减少处理时间。

我认为SASPy不可能(似乎使用Workspace服务器)。

问候。

2 个答案:

答案 0 :(得分:1)

使用Java库和使用.NET库,有两种方法可以在代码中调用存储过程服务器。

就个人而言,我使用.NET创建了一个命令行应用程序,它调用存储过程并将流返回给STDOUT。从Python中,您只需阅读该输出。您可以从Java复制它(但.NET库更容易使用)。

另一种方法是使用一个库,它允许你从你的Python(或.NET,如果你使用的是MS Python)调用Java并以这种方式集成它。

最后,对于大多数用例,使用STP Web应用程序更容易。您可以登录一次,存储授权令牌并将其传回,从而消除每次调用重新登录的开销。

答案 1 :(得分:0)

您最好的选择是安装saspy,配置sascfg_personal.py文件,打开会话并运行存储的过程。像这样:

import saspy
sas = saspy.SASsession(cfgname='winiomwin')
stp = 'proc stp program="/Shared Data/Stored_Processes/your_SP"; run;'
sas_output = sas.submit(stp)
sas_log = sas_output['LOG']