将日志打印到 table 或本地驱动器上的文本文件

print log to table or to text file on LOCAL drive

我想将我的 SAS EG 登录到 R 中。

我的第一个想法是使用 PROC PRINTTO 打印到一个文本文件,然后我将导入,但我只能用它来将日志打印到安装了 SAS 的服务器上,我是无法从 R 访问(我没有管理员权限)。

我想出了一种从 R 中 运行 egp 项目和从 R 中读取 SAS tables 的方法,所以如果我可以将其内容重定向到,我将能够获取日志table,或者我将存储到 table.

中的宏变量

我该怎么做?

您可以注册并运行您的代码作为 SAS 存储过程,然后使用 R 通过 http 调用它。附加 &_debug=log 会给你日志。只有一个选择.. 并避免 proc 打印。

我想出了一个办法:

  • 使用 PROC PRINTTO 将我的项目日志重定向到服务器上的一个文件,我可以从 SAS(而不是 R)写入该文件。
  • 将此文件作为带分隔符的文件读入 table,使用我将不得不尝试不在我的代码中使用的异国定界符(不幸的是,没有定界符似乎不是一个选项)
  • 从 R 导入这个 table 和 trim 不相关的第一行

我的 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 过程 "should" 的替换参数使 table 删除变得多余,但由于某些原因(可能是因为我使用了 oracle 库)它没有。

它产生以下输出,存储到 table 中:

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