Включение SAS Grid - PullRequest
       9

Включение SAS Grid

0 голосов
/ 05 марта 2019

Мне нужно вытащить много данных, и я пытаюсь сделать так, чтобы они работали быстрее. К сожалению, я не SAS-кодер, поэтому я пытаюсь изменить существующий код. Я получаю сообщение об ошибке «Нет соответствующего оператора% DO для% END» в секции waitfor all журнала. Я даже не уверен, что это сработало бы иначе.

Есть ли у кого-нибудь опыт работы с сеткой, чтобы помочь мне?

%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

1 Ответ

0 голосов
/ 05 марта 2019

Попытка добавить точку с запятой для завершения оператора макроса %end непосредственно перед началом оператора waitfor.

%end;

waitfor _all_
...