我每月运行一些SAS查询,它们都需要相当长的时间才能运行。我想知道是否有任何方法可以安排这些按月以特定顺序在某个特定日期运行?
感谢您的帮助!
答案 0 :(得分:3)
根据您使用的系统,方法可能会有所不同。
主要思想是您可以将所有查询存储到SAS处理文件,然后使用系统的调度程序(例如,Windows的任务调度程序),每月运行一次。
快速帮助(适用于Windows): http://analytics.ncsu.edu/sesug/2006/CC04_06.PDF
答案 1 :(得分:3)
在unix上,您可以将程序设置为使用cron作业以批处理模式运行。
您可以使用的一个技巧是设置主SAS程序来运行所有内容。 制作一个只包含需要每月更改的全局变量的程序,然后使用includes调用每月程序。 类似的东西:
%let globalvar1 = ThisMonth;
%let globalvar2 = LastMonth;
%include '/path/to/sas/program1';
%include '/path/to/sas/program2';
然后你只批量运行这一个程序...它将以正确的顺序运行它们并自动等待它们完成执行,然后再转移到下一个程序(设置单独的cron作业需要你高估多长时间每个人都这样,他们不会发生冲突。)
这会将所有内容转储到一个日志文件中......这可能是好事也可能是坏事。
另一种选择是在每次运行时使用X
从操作系统调用程序。
我不是100%的语法,但是如果你为你的操作系统使用正确的语法(这可能适用于unix或windows,那么你只需安排一个程序)就可以了。
在每个程序结束时,只需添加:
X "Path/to/sas.exe" -batch -noterminal nextProgram.sas
这将允许您将程序链接在一起,以便它们在完成后启动下一个程序。然后你只需使用task scheduler / cron启动“sas.exe -batch -noterminal firstProgram.sas”
这是我在Windows任务调度程序中找到的随机教程:
http://www.iopus.com/guides/winscheduler.htm
只需将其指向SAS.exe,然后在步骤#2中,将选项更改为类似-batch -noterminal /path/to/Program.sas
的内容我95%确定这是Windows sas上的正确语法(我使用unix所以我无法检查它)。