将SAS数据集中的数据分配给变量(SAS E Guide 5.1)

时间:2015-08-27 14:04:27

标签: sas sas-macro proc-sql

我使用SAS执行查询,有时会向我的团队发送电子邮件以确认查询已执行。但是,除非我手动检查,否则我从未真正知道它是否成功。

例如,我有一个执行存储过程的SAS作业,该存储过程会附加一个包含今天更多数据的表。我希望能够将该表中的MAX(日期)添加到电子邮件文本,或者将日期为今天的COUNT(*)添加到电子邮件中,这样我就可以知道添加了多少条记录。

以下是我的想象:

PROC SQL;
    CREATE TABLE sasData AS
    SELECT 
        COUNT(*) AS myRecordCount
    FROM
        tableName
;QUIT;

%LET newVariable = sasData.myRecordCount;

所以,我知道上面的内容并不是它的工作原理,但它是这个想法。

有谁能告诉我如何正确地做到这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用的是SQL,则可以获取自动宏变量SQLOBS中前一个SQL语句处理的观察数。将其保存到另一个宏变量,因为在下一个SQL语句运行时它将被覆盖。

proc sql ;
  create table class as select * from sashelp.class ;
%let nobs=&sqlobs ;
  insert into class select * from sashelp.class where name like 'A%' ;
%let nobs2=&sqlobs ;

%put &=nobs &=nobs2 ;
NOBS=19 NOBS2=2

您可以使用INTO子句创建宏变量。

select count(*)
     , max(age)
into :nobs3 trimmed 
   , :max_age trimmed
from sashelp.class 
;