SAS - Чтение определенного файла из местоположения FTP - PullRequest
0 голосов
/ 28 ноября 2018

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

Есть ли способ в SAS, где я могу прочитать имя всех файлов, имеющихся на FTP-сервере, и дать пользователю диалоговое окнос этой информацией, чтобы они могли ввести имя файла, который они хотят прочитать.

1 Ответ

0 голосов
/ 28 ноября 2018

В интерфейсе диспетчера дисплеев SAS вы можете использовать операторы шага данных WINDOW или макроса %WINDOW для определения простого средства выбора и DISPLAY или %DISPLAY для его повышения.Простой инструмент выбора очень прост, без скроллеров или других современных украшений.

Список папок FTP получен с использованием имени файла FTP option engine LS

Пример кода:

/**/
* location of FTP folder;
filename folder ftp 
  user = 'anonymous'
  host = 'ftp.cdc.gov'
  cd = '/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2011'
  ls
;

* retrieve listing;
data files;
  infile folder;
  input;
  order + 1;
  fileinfo = _infile_;
run;

/**/

%macro picker(
  /* Dynamically build a %WINDOW definition, display it and return the last selected item */
  name=, /* Name of window */
  title=, /* First line text */
  data=, /* data set containing items */
  order=order, /* variable for ordering items in the picker*/
  item=, /* variable to pick a value of */
  result= /* name of macro variable that will contain the picked item, must pre-exist in caller scope */
);

  %* field definitions will look like
  %*  #2 @2 field<i> 1 color=blue attr=rev_video " &filename<i>" ;

  %local n i row field_def;

  proc sql noprint;
    select count(*) into :n trimmed from &data;
    %do i = 1 %to &n;
      %local field&i item&i;
    %end;

    select
      &order, &item
    into
      :order1-, :item1-
    from
      &data;
  quit;

  %do i = 1 %to &N;
    %let field_def = &field_def #%eval(&i+1) @2 field&i 1 color=blue attr=rev_video " &&item&i";
  %end;

  %WINDOW PICKER rows=30 columns=80
    #1 @1 "&title. - Mark an item and Press F3"
    &field_def
  ;

  %display PICKER;

  %do i = 1 %to &N;
    %if %length(&&field&i) %then %let &result=&&item&i;
  %end;
%mend;


%let selected=;
%picker(name=PICKER, title=Pick a file, data=files, item=fileinfo, result=selected);

%put &=selected;

Более сложные сборщики могут быть построены с использованием SAS / AF.Другие возможности включают диалоговые окна с подсказками «Сохраненный процесс», фрагменты SAS Studio или страницу сервера SAS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...