我知道有一种方法可以通过 SAS 存储过程 Web 应用程序调用存储过程,但我想知道是否有一种方法可以直接调用存储过程服务器。
目标是调用一个存储过程,尽可能高效地将数据(通过 _webout 文件?)传递给 python。因此,也许它可以通过跳过 SAS Web 应用程序来减少处理时间。
我认为 SASPy 不可能(似乎正在使用 Workspace 服务器)。
问候。
我知道有一种方法可以通过 SAS 存储过程 Web 应用程序调用存储过程,但我想知道是否有一种方法可以直接调用存储过程服务器。
目标是调用一个存储过程,尽可能高效地将数据(通过 _webout 文件?)传递给 python。因此,也许它可以通过跳过 SAS Web 应用程序来减少处理时间。
我认为 SASPy 不可能(似乎正在使用 Workspace 服务器)。
问候。
有两种方法可以在代码中调用存储过程服务器,使用 Java 库和使用 .NET 库。
就个人而言,我使用 .NET 创建了一个命令行应用程序,它调用存储过程并将流返回到 STDOUT。在 Python 中,您只需读取该输出。您可以从 Java 复制它(但 .NET 库更易于使用)。
另一种方法是使用一个库,该库允许您从您的 Python 风格调用 Java(或 .NET,如果您使用的是 MS Python)并以这种方式集成它。
最后,对于大多数用例来说,使用 STP Web 应用程序更容易。您可以登录一次,存储授权令牌,然后将其传回,从而消除每次调用重新登录的开销。
您最好的选择是安装 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']