linux - 将 SAS Enterprise Guide 提取到 Unix 服务器可运行批处理中?

标签 linux batch-file sas enterprise

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

问题一:

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

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

问题2:

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

最佳答案

你有几个我熟悉的选项,而且我怀疑如果 Dom 碰巧路过,他会知道更多。这些答案基于 EG 6.1,这是当前版本(9.4 附带);在早期版本中,其中一些事情可能并非如此。

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

其次,来自博文"Four Ways to Schedule SAS Tasks" ,选项 3 和 4 可能对您有所帮助。 SAS Platform Suite 部分设计用于调度,使用 SAS Management Console 通过操作系统工具进行调度的选项都非常有帮助。

第三,您可能需要查看 SAS 存储过程,它应该是可调度的。过程流可以转换为存储过程。


针对您的具体问题:

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

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

关于linux - 将 SAS Enterprise Guide 提取到 Unix 服务器可运行批处理中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27101335/

相关文章:

sas - 从包含引号、双引号和不匹配引号的宏变量创建数据集变量

c++ - 共享库、对象构造函数和 fork() 行为

无法在降级的 C 程序上运行 VLC

java - JVM 进程如何分配内存?

windows - 使用批处理文件检查服务器是否已启动?

linux - 从在 Linux KornShell 脚本中运行的 SAS 程序收集返回码和标准输出字符串

sas - 保留 SAS 中所有观察值的值

c++ - undefined symbol : memset, 版本 GLIBC_2.2.5

c# - 我们可以从共享路径运行批处理文件 (.bat)

windows - 如何执行 If 循环并使用批处理查找文本