首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS网格启用

SAS网格启用
EN

Stack Overflow用户
提问于 2019-03-05 18:12:41
回答 1查看 58关注 0票数 0

我必须提取大量的数据,并且我正在尝试网格,使它能够运行得更快。不幸的是,我不是一个SAS编码器,所以我试图修改现有的代码。我一直在日志的“等待所有”部分中得到一个“不匹配%DO语句表示%END”错误。我甚至不确定这样做会不会奏效。

有人有网格经验来帮我吗?

代码语言:javascript
复制
%let _sdtm=%sysfunc(datetime());
%macro splitmonths(begmonth=,endmonth=);
%let rc=%sysfunc(grdsvc_enable(_all_,server=SASApp));
options autosignon;

%do imth=&begmonth %to &endmonth;
    signon t&imth;
    %syslput imth=&imth/remote=t&imth;
    rsubmit t&imth wait=no;
        PROC SQL;
        CREATE TABLE WORK.QUERY_FOR_VW_HOUPOSSW_FACT_&imth AS 
            SELECT t1.outletfamily, 
                t1.ppmonth, 
                t1.itemnumber, 
                /* Dollars */
                (SUM(t1.totalvalue)) FORMAT=DOLLAR20. AS Dollars
            FROM HOUPWP7.vw_houpossw_fact t1
            WHERE t1.ppmonth = &imth;
            GROUP BY t1.outletfamily,
                   t1.ppmonth,
                   t1.itemnumber;
        QUIT;
    endrsubmit;
%end

waitfor _all_
    %do imth=&begmonth %to &endmonth;
        t&imth
    %end;
    ;
signoff _all_;


data newdata;
    set
    %do imth=&begmonth %to &endmonth;
        newdata&imth
    %end;
    ;
run;

proc datasets lib=work;
    %do imth=&begmonth %to &endmonth;
        delete newdata&imth;
    %end
quit;
%mend splitmonths
%splitmonths (begmonth=541, endmonth=588)


%let _edtm=%sysfunc(datetime());
%let _runtm=%sysfunc(putn(&_edtm - &_sdtm, 12.4));
%put It took &_runtm second to run the program;enter code here
EN

回答 1

Stack Overflow用户

发布于 2019-03-05 18:20:59

尝试在%end语句开始之前添加分号以结束waitfor宏语句。

代码语言:javascript
复制
%end;

waitfor _all_
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55009099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档