我正在读取许多表,想知道正在处理的表的名称,因此可以将其保存到输出表中。是否有自动变量或某种标志会有所帮助?我确定在读取CSV文件列表等时可以完成此操作。但这是数据集。像这样:
%let table_list=one two three;
Data whatever;
set &table_list;
table_name = ?????;
答案 0 :(得分:3)
您需要在SET语句上使用INDSNAME =选项。查找详细信息。
INDSNAME =变量
创建并命名一个变量,该变量存储从中读取当前观测值的SAS数据集的名称。存储的名称可以是数据集名称或物理名称。物理名称是操作环境识别文件的名称。
答案 1 :(得分:1)
如果您刚刚在上一个proc或datastep中创建了数据集,则可以使用&SYSLAST
自动宏变量来检索其名称。
如果要将其保存为下游数据集的元数据的一部分,而不是将其存储在变量中,则一种选择是为该数据集分配标签,例如
data input_ds;
a=1;
output;
run;
%put &SYSLAST;
data output_ds(label="created from &SYSLAST");
set input_ds;
b=1;
run;
%put &SYSLAST;
您还可以使用proc数据集来分配数据集标签:
/*Modify an existing label*/
proc datasets lib = work;
modify output_ds(label="New label");
run;
quit;
您可以使用attrc
函数来检索数据集标签。