sas - 将日志打印到表或本地驱动器上的文本文件
问题描述
我想将我的 SAS EG 日志内容输入 R。
我的第一个想法是使用PROC PRINTTO
打印到一个文本文件,然后将其导入,但我只能使用它将日志打印到安装了 SAS 的服务器,我无法从 R 访问它(我不t 具有管理员权限)。
我想出了一种从 R 运行 egp 项目并从 R 读取 SAS 表的方法,因此,如果我可以将其内容重定向到表或宏变量,我将能够获取日志,然后将其存储到一张桌子。
我怎样才能做到这一点 ?
解决方案
我想出了一个办法:
- 用于
PROC PRINTTO
将我的项目日志重定向到服务器上我可以从 SAS(而不是 R)写入的文件。 - 将此文件作为分隔文件读入表中,使用我将不得不尝试不在我的代码中使用的外来分隔符(不幸的是,没有分隔符似乎不是一个选项)
- 从 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;
过程的 replace 参数IMPORT
“应该”使表删除变得多余,但由于某种原因(可能是因为我使用了 oracle 库)它没有。
它产生以下输出,存储到表中:
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
推荐阅读
- apache-kafka - 我们如何为 kafka 连接服务启用身份验证?
- exception - snakemake:未检测到模棱两可的规则?
- mat - 如何在 mat-date-range-input 的 matStartDate 和 matEndDate 上将秒值与 Date 一起作为 'DD-MM-YYYY'
- react-native - 是否有任何带有日期阻塞的 React Native 日期范围选择器
- r - 使用 BFAST 显示断点
- c# - java Collections emptySet() 的 C# 等价物是什么
- html - 如何将引导内联表单置于网页中心
- http-post - ELB 经典切换后 AWS ALB 返回 411
- tensorflow - 当 clients_per_round 超过 99 时,tff.templates.IterativeProcess.next() 中的 TensorFlow Federated (TFF) TypeError
- ethereum - 如何修复“身份不明的合同”?OpenSea 无法“理解”ERC1155