创建会话运行期间生成的输入和输出数据文件列表 - SAS

时间:2014-11-07 09:26:54

标签: sas

我的情况 我希望一切都好。我目前正在进行一项研究项目,处理大量不同库下的数据集。我创建了多个%宏定义,这些定义又生成了许多输出表并使用了许多输入表。这些表保存在不同的库中。

我的问题: 创建这些数据文件时,我的计算机速度会变慢。清除每个宏程序会话中不需要的表会增加计算响应。

我的查询: 有没有办法生成由每个宏程序使用PROC SQL或DATA步骤创建的输入和输出表的列表?每个MACRO PROGRAM都有多个%宏,再次出于代码可读性的目的。使用“IN”或“OUT”语句对数据文件进行前缀/后缀无济于事。 这将有助于我进行数据管理。

1 个答案:

答案 0 :(得分:5)

您可能有两个选择:解析日志文件或在每次宏调用之前和之后创建dictionary.tables的快照并提取差异。我更喜欢(更容易:))第二种选择,例如像

PROC SQL;
CREATE TABLE BEFORE AS SELECT CATS(libname,".",memname) AS fname FROM DICTIONARY.tables WHERE libname in ('WORK');
QUIT;

PROC SQL;
CREATE TABLE AFTER AS SELECT CATS(libname,".",memname) AS fname FROM DICTIONARY.tables WHERE libname in ('WORK') AND calculated fname not in (select fname FROM BEFORE); 
QUIT;