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