【问题标题】:Execute SAS Stored Process with Python使用 Python 执行 SAS 存储过程
【发布时间】:2018-05-23 15:25:39
【问题描述】:

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

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

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

问候。

【问题讨论】:

    标签: python sas sas-stored-process saspy


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢!您是否有任何参考教程或示例来执行此操作?不熟悉 C# 或 Java。
    • 查看 SAS 文档。如果您对此有任何疑问,我建议您咨询 SAS 技术支持。
    【解决方案2】:

    最好的办法是安装 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']
    

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2013-12-06
      • 2012-04-16
      • 2018-07-03
      相关资源
      最近更新 更多