我们在 Enterprise Guide 中构建了一个项目,目的是创建易于理解和维护的代码。该项目包含一组应按特定顺序运行的流程。我们需要在运行 SAS 元数据服务器的 Linux 服务器计算机上运行该项目。 基本思想是将这个项目提取到 SAS 代码中,我们可以从 Linux 中的命令行作为批处理作业运行它。
问题一:
- 有没有其他方法可以在 Linux 托管的 SAS 服务器中安排批处理作业?我已经阅读了有关调度/运行批处理作业的 VBS 脚本,但为了在 Linux 服务器上完成此操作,需要安装 WINE,在已经运行许多其他重要应用程序的生产机器上,它几乎完全没有了的问题。
- 如果我给出运行过程流的具体顺序,是否可以指定将完整项目导出为 SAS 代码?我已经尝试过有序列表,它可以让你成为一个按顺序运行的任务列表(虽然没有办法选择整个流程作为单个任务),但不幸的是,这个有序列表本身后来是不可能的导出为 SAS 代码。
我们目前的解决方案如下: 我们将 SAS EG 项目的每个单独流程导出为 SAS 代码,然后创建另一个包含 %include 行的 SAS 代码,以按我们想要的顺序运行所有提取的代码。这当然是一种可能的解决方案,但绝对不是最优雅的解决方案。
问题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/