Sas 从libname调用宏变量
如果希望在libname中使用procsql的from子句中的宏变量,如何调用它? 让我告诉你我的意思:Sas 从libname调用宏变量,sas,sas-macro,Sas,Sas Macro,如果希望在libname中使用procsql的from子句中的宏变量,如何调用它? 让我告诉你我的意思: options nofmterr; libname FRST "/ecm/retail/mortgage/nbk6kra/LGD/data/frst_201312bkts"; libname HELN "/ecm/retail/mortgage/nbk6kra/LGD/data/heln_201312bkts"; libname HELC "/ecm/retail/mortgage/nbk6
options nofmterr;
libname FRST "/ecm/retail/mortgage/nbk6kra/LGD/data/frst_201312bkts";
libname HELN "/ecm/retail/mortgage/nbk6kra/LGD/data/heln_201312bkts";
libname HELC "/ecm/retail/mortgage/nbk6kra/LGD/data/helc_201312bkts";
%let pathLGD = /new/mortgage/2014Q4/LGD;
%let prod = FRST;
/**************** Segment calculation **************** Date filter to be consistent with model documentation for segmented tables****************/
%macro Performance(prod);
proc sql;
create table lgd_seg_&prod as
select distinct
SegDT_LGD_2013,
min(ScoreDT_LGD_2013) as min_range,
max(ScoreDT_LGD_2013) as max_range,
count(*) as count,
mean(lgd_ncl_adjusted) as LGD_actual,
mean(ScorePIT_LGD_2013) as LGD_pred_pit_1,
mean(ScoreDT_LGD_2013) as LGD_pred_dt_1
from "&prod."scored;
where coh_asof_yyyymm > 200612
group by 1;
quit;
PROC EXPORT DATA=lgd_seg_&prod._fs
OUTFILE= "&pathLGD./lgd_seg.xlsx"
DBMS=XLSX REPLACE;
SHEET="&prod._lgd_seg_fs";
RUN;
%mend;
%Performance(prod=FRST);
%Performance(prod=HELN);
%Performance(prod=HELC);
因此,在“from”子句中,宏应该分别读取FRST.scored、HELN.scored和HELC.scored。目前它找不到该文件,如果我删除引号,它就会变成“work.FRSTscored”。
我希望我已经说清楚了。欢迎任何输入和注释。如果您想在宏变量的解析值后面加上一个立即附加字符,则应使用句号(
)转义宏变量。例如:
%let start = one;
%put &start.two;
%put &start..two;
%put &startend;
一对二一。二
警告:未解析明显的符号引用 因此,您的代码应该读取&prod..scored代码>
如果需要,还可以使用双符号(
&&
)延迟宏变量的解析:
三个三 或: 开端
删除应用于宏变量prod外部的引号,并在宏变量后面使用两个点(一个点表示宏变量名称的结束,另一个点指定libname引用后面的表名)
from &prod..scored
谢谢你的帮助!
%let three = inception;
%put &&&&&&&start&end;
from &prod..scored