Я застреваю, пытаясь перебирать список значений в цикле macro% do. Каждое значение должно использоваться как суффикс переменной.Создание суффиксов при повторении через список
Подход основан на документации SAS: http://support.sas.com/kb/26/155.html
The (упрощенный) код:
%macro loop(values);
%let count=%sysfunc(countw(&values));
%do i = 1 %to &count;
%let value=%qscan(values,i,%str(,));
proc sql;
select count(distinct hut_id) as prefix_&value.
from saslib.tl1_results_eval
group by plan_cell;
quit;
%end;
%mend;
%loop(%str(a,b,c,d))
сообщение в результате ошибки:
MLOGIC(LOOP): %DO loop beginning; index variable I; start value is 1; stop value is 4; by value
is 1.
MLOGIC(LOOP): %LET (variable name is VALUE)
MPRINT(LOOP): proc sql;
22: LINE and COLUMN cannot be determined.
NOTE 242-205: NOSPOOL is on. Rerunning with OPTION SPOOL might allow recovery of the LINE and
COLUMN where the error has occurred.
ERROR 22-322: Syntax error, expecting one of the following: ',', AS.
MPRINT(LOOP): select count(distinct hut_id) as prefix_a from group by plan_cell;
MPRINT(LOOP): quit;
Интересно, что если я удалю «prefix_» из «count (отдельный hut_id) в качестве префикса_ & значение». - он работает абсолютно нормально. К сожалению, мне нужен префикс. Кроме того, как вы можете видеть в сообщении журнала, инструкция PROC SQL в конце концов компилируется правильно, но ошибки кода перед выполнением.
Любые идеи, что здесь происходит? Спасибо!
Можете ли вы расширить эти «веские причины»? Спасибо –
Чтобы получить статистику времени для каждого шага, а также, если вы хотите, чтобы последующие операторы SQL выполнялись после ошибки .. –
Работал как шарм, RawFocus. Огромное спасибо! –