Необходимо установить неизвестное количество наборов данных вместе - PullRequest
1 голос
/ 31 октября 2019

У меня есть макрос, который создает несколько наборов данных. Количество наборов данных зависит от других факторов и может быть 0-X. Мне нужно собрать все эти наборы данных в один набор данных для экспорта.

%macro runpromo(setid=, title=, start=, end=, no=);

%get_offer_data(label=&title , start=date &start, end=date &end, rc=%quote(&setid), source=1);

data promo&no.;
length item_desc $50.0;
set edw_final;
run;

%mend runpromo;
data _null_;
set macros;
call execute('%runpromo(setid='||code||',title='||promo_title||',start ='||start_date||',end='||end_date||',no='||count||');');
run;


data all_promos;
length item_desc $50.0;
set promo1-promoX;
run;

Я хочу, чтобы этот код запускался ежедневно, поэтому мне не нужно каждый раз заходить и обновлять имена наборов данных.

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Используйте соглашение об именах, где каждый набор данных имеет одинаковый префикс и идет в одну библиотеку. Затем вы можете легко сложить их в конце:

data want;
   set prom:;
run;

Двоеточие (:) действует как подстановочный знак, и все наборы данных с префиксом prom в рабочей библиотеке будут объединены.

1 голос
/ 31 октября 2019

Почему бы просто не создать большой набор данных по ходу дела?

Определение макроса:

%macro runpromo(setid=, title=, start=, end=, no=);

%get_offer_data(label=&title,start=date &start,end=date &end,rc=%quote(&setid),source=1);

data promo_fix;
  length item_desc $50;
  set edw_final;
run;

proc append base=all_promos data=promo_fix force;
run;

%mend runpromo;

Программа:

proc delete data=all_promos;
run;

data _null_;
  set macros;
  call execute(cats('%nrstr(%runpromo)'
              ,'(setid=',code
              ,',title=',promo_title
              ,',start =',start_date
              ,',end=',end_date
              ,',no=',count
              ,');'
   ));
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...