распечатать журнал в таблицу или в текстовый файл на локальном диске - PullRequest
0 голосов
/ 30 января 2019

Я хочу получить содержимое моего журнала SAS EG в R.

Моей первой идеей было использование PROC PRINTTO для печати в текстовый файл, который я затем импортировал, но я могу использовать его толькораспечатать журнал на сервере, на котором установлен SAS, к которому у меня нет доступа из R (у меня нет прав администратора).

Я нашел способ запуска проектов egp из R и чтения таблиц SAS из R, поэтому я смогу извлечь журнал, если смогу перенаправить его содержимое в таблицу или в макропеременную.что я буду хранить в таблице.

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я нашел способ:

  • использовать PROC PRINTTO, чтобы перенаправить журнал моего проекта в файл на сервере, куда я могу писать из SAS (а не из R).
  • Считайте этот файл как файл с разделителями в таблицу, используя экзотический разделитель, который мне просто придется постараться не использовать в моем коде (без разделителя, к сожалению, это не вариант)
  • importэту таблицу из R и обрежьте нерелевантные первые строки

Мой код SAS:

%let writeable_folder_on_server = /some_path/;
%let temp_log_for_R = &writeable_folder_on_server/temp_log_for_R.txt;
%let log_as_tbl = mylib.mytbl;

proc printto log="&temp_log_for_R" print="&temp_log_for_R" new;
run;

proc datasets library= mylib nolist;
delete mytbl;
run;

/* code producing log */
%put foo;
%put bar;

proc import datafile="&temp_log_for_R" out=&log_as_tbl dbms=dlm replace;
 delimiter='§';
 getnames=no;
 GUESSINGROWS=MAX;
run;

Параметр замены процедуры IMPORT "должен" сделать удаление таблицы избыточным, нопо какой-то причине (может быть потому, что я использовал библиотеку оракула) это не так.

Он производит следующий вывод, сохраненный в таблице:

NOTE: PROCEDURE PRINTTO used (Total process time):
real time           0.01 seconds
user cpu time       0.01 seconds
system cpu time     0.01 seconds
memory              904.75k
OS Memory           15140.00k
Timestamp           01/30/2019 01:29:21 PM
Page Faults                       2
Page Reclaims                     251
Page Swaps                        0
Voluntary Context Switches        1
Involuntary Context Switches      0
Block Input Operations            0
Block Output Operations           0


28
29         proc datasets library= mylib nolist;
30         delete mytbl;
31         run;

NOTE: Deleting mylib.mytbl (memtype=DATA)
32
33         /* code producing log */
34         %put foo;
foo
35         %put bar;
bar
36

NOTE: PROCEDURE DATASETS used (Total process time)
real time           0.17 seconds
user cpu time       0.02 seconds
system cpu time     0.00 seconds
memory              2425.56k
OS Memory           17956.00k
Timestamp           01/30/2019 01:29:21 PM
2

Page Faults                       5
Page Reclaims                     858
Page Swaps                        0
Voluntary Context Switches        57
Involuntary Context Switches      4
Block Input Operations            0
Block Output Operations           0
0 голосов
/ 30 января 2019

Вы можете зарегистрировать и запустить свой код как хранимый процесс SAS и использовать R для вызова его через http.Добавление &_debug=log даст вам журнал.Только один вариант .. И позволяет избежать печати процесса.

...