You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无调度工具时,SAS Studio日期触发执行代码的宏问题咨询

问题解决:SAS Studio循环中每次检查日期再执行报告

问题根源

原代码的宏参数DOM=day(&currentDate)在宏调用时就被解析为初始运行时的日期日,后续循环中不会重新计算当前日期,导致即使日期变化,仍会沿用第一次的判断结果。

修正后的代码

%let currentDT = %sysfunc(datetime());

/* 等待到20:00开始运行(若当前时间已过20:00,wait_sec为负,sleep会立即执行) */
data _null_;
    wait_sec = '20:00:00't - timepart(datetime());
    zzz = sleep(wait_sec, 1);
run;

%macro dailyrun;
    %do i=1 %to 8;
        data _null_;
            /* 每次循环都重新获取当前日期的日,进行判断 */
            if day(today()) in (2) then do;
                call execute('%include "/sasdata/folder/nameofreport.sas";');
            end;
        run;

        /* 暂停5小时(5*3600=18000秒,原代码的18000000是错误值,会导致休眠约5000小时) */
        data _null_;        
            zzz2 = sleep(18000);
        run;
    %END;
%mend dailyrun;

%dailyrun() 

关键修改点

  • 移除固定宏参数:不再依赖初始日期的固定值,每次循环通过day(today())实时获取当前日期的日,保证判断逻辑基于最新时间。
  • 修正sleep时间:原代码的18000000会导致超长休眠,改为18000(5小时对应的秒数),后续改为24小时时替换为86400。
  • 精简冗余代码:删除无实际作用的else;语句,让代码结构更清晰。

后续优化建议

若后续改为每24小时运行一次、每周提交一次:

  • 将循环次数改为7(对应一周7天)
  • 将sleep时间改为86400(24×3600秒)
  • 可根据需要调整判断的日期范围(如in (2,9,16,23)对应每周二)

内容的提问来源于stack exchange,提问作者Ctine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:22:54