【问题标题】:Extract SAS Enterprise Guide into Unix Server runnable batch?将 SAS Enterprise Guide 提取到 Unix Server 可运行批处理中?
【发布时间】:2015-01-21 23:00:16
【问题描述】:

我们在企业指南中构建了一个项目,目的是创建易于理解和可维护的代码。该项目包含一组应按特定顺序运行的流程。我们需要在运行 SAS 元数据服务器的 Linux 服务器机器上运行这个项目。 基本思路是将这个项目提取为 SAS 代码,我们可以在 Linux 中作为批处理作业从命令行运行。

问题一:

  1. 还有其他方法可以在 Linux 托管的 SAS 服务器中安排批处理作业吗?我已经阅读了有关用于调度/运行批处理作业的 VBS 脚本,但是为了在 Linux 服务器上完成这项工作,需要安装 WINE,它在已经运行许多其他重要应用程序的生产机器上几乎完全不可用问题。
  2. 如果我给出了运行流程的具体顺序,有没有办法将完整的项目导出到 SAS 代码中?我试过有序列表,它可以让你按顺序运行的任务列表(虽然没有办法选择整个流程流作为单个任务),但不幸的是,这个有序列表本身以后是不可能的导出为 SAS 代码。

我们目前的解决方案如下: 我们将 SAS EG 项目的每个单个流程流导出为 SAS 代码,然后使用 %include 行创建另一个 SAS 代码,以按照我们想要的顺序运行所有提取的代码。这当然是一种可能的解决方案,但绝对不是最优雅的解决方案。

问题2:

  1. 由于我不知道之后代码是如何导出的,所以我选择的解决方案是否有任何危险。
  2. 还有其他更优雅的方式吗?

【问题讨论】:

  • 不是答案,但这可能会有所帮助。如果将 .egp(项目文件)重命名为 .zip,则可以查看 EG 项目的内容(通常是 .sas 文件,其中包含描述流程的代码和 XML 文件)。
  • 我让用户导出到“每日”、“每小时”、“每周”或“每月”文件夹之一。他们还需要维护一个带有作业名称的 Excel 工作簿。然后我有一个循环遍历 Excel 工作簿中的作业并使用 X 命令提交它们的作业。收集作业的返回代码 (&SYSRC),并在完成时发送摘要电子邮件。
  • 导出的代码有一个问题,行的长度可能会太长。 EG 中有一个“错误”,它可能会在一行中创建超过约 250 个字符的行。我不记得确切的数字,但批处理作业只能有大约 250 个字符。导出项目的用户应该得到通知,这样他们就可以“断”行。
  • 这是描述批量提交超过 256 个字符的行的问题的 SAS 说明:support.sas.com/kb/15/883.html
  • 在 9.2 之后,您应该将 LRECL 系统选项设置为比 256 长得多,您不必担心这个限制。

标签: linux batch-file sas enterprise


【解决方案1】:

你有几个我熟悉的选项,而且我怀疑如果 Dom 发生在他身边,他会知道更多。这些答案基于 EG 6.1,这是当前版本(随 9.4 提供);在早期版本中,其中一些可能不是真的。

首先,如果您从 Windows 运行 Enterprise Guide,您可以在本地安排作业(在任何具有 Enterprise Guide 的 Windows 机器上)。您不是直接安排服务器,而是安排 Windows 启动一个连接到服务器并发挥其魔力的 EG 进程。这就是我在很大程度上与日程安排互动的方式(因为我的日程安排需求相当“轻”)。

其次,从博文"Four Ways to Schedule SAS Tasks" 来看,选项 3 和 4 可能对您有所帮助。 SAS 平台套件部分设计用于调度,使用 SAS 管理控制台通过操作系统工具进行调度的选项都非常有用。

第三,您可能想要研究 SAS 存储过程,它应该是可调度的。可以将流程流转换为存储过程。


对于您的具体问题:

  • 问题 1:当您导出流程或项目时,至少在 6.1 中,您可以选择更改程序导出的顺序。它是手动的,所以它可能并不完美,但它确实为您提供了这种选择。 (默认情况下,代码似乎是按创建顺序排列的,这是次优的。)项目导出确实将流程流组合在一起,但您无法选择操作流程的顺序 - 您必须移动每个程序周围,​​这将是乏味的。如果您需要多次运行程序,它当然也会降低您的灵活性。

  • 问题 2:正如 Stig Eide 在 cmets 中指出的那样,确保您的系统选项 LRECL 大于 256(默认值),否则您将面临代码被切断的风险。在 9.2+ 中,这是可以修改的;只需将LRECL=32767放在您的 config.sas 文件中即可。

【讨论】:

  • 谢谢,LRECL 是一个非常好的提示。我不确定 SAS EG 导出功能是否会处理自己创建的关于该问题的查询,但我会将其用作预防措施。谢谢大家的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多