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

将SAS数据集中的数据分配给变量(SAS E指南5.1),sas,sas-macro,proc-sql,Sas,Sas Macro,Proc Sql,我使用SAS执行查询,有时会在查询完成后向我的团队发送电子邮件以确认查询已执行。然而,除非我手动检查,否则我永远不知道它是否成功 例如,我有一个SAS作业,它执行一个存储过程,该存储过程向一个表中追加今天的更多数据。我希望能够将该表中的最大(日期)添加到电子邮件文本中,或者在电子邮件中添加日期为今天的计数(*),这样我就可以知道添加了多少条记录 下面是我想象中的情景: PROC SQL; CREATE TABLE sasData AS SELECT COUNT(

我使用SAS执行查询,有时会在查询完成后向我的团队发送电子邮件以确认查询已执行。然而,除非我手动检查,否则我永远不知道它是否成功

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

下面是我想象中的情景:

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

%LET newVariable = sasData.myRecordCount;
所以,我知道上面的不是它的工作原理,而是它的想法


有人能告诉我怎么做吗?谢谢

您可以使用以下命令将结果直接存储在宏变量中:

PROC SQL NOPRINT;
    SELECT
        count(*) INTO:myRecordCount
    FROM tableName;
QUIT;

另外,还可以使用分隔符指定分隔符,将值列表存储到宏变量中。

如果使用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 
;