1
我正在使用IOM連接到元數據服務器的配置中工作 - 因此在我的環境中沒有自動宏變量來確定用戶ID(我們正在使用池工作區服務器與通用主機帳戶)。從SAS元數據服務器獲取用戶ID
是否有一段代碼可用於查詢SAS用戶標識的元數據服務器?
我正在使用IOM連接到元數據服務器的配置中工作 - 因此在我的環境中沒有自動宏變量來確定用戶ID(我們正在使用池工作區服務器與通用主機帳戶)。從SAS元數據服務器獲取用戶ID
是否有一段代碼可用於查詢SAS用戶標識的元數據服務器?
以下是相當長的囉嗦,可能會縮短 - 但它的工作!
data _null_;
call symput('login_id',''); /* initialise to missing */
n = 1;
length loginUri person $ 512;
nobj = metadata_getnobj("omsobj:Login?*",n, loginUri);
if (nobj>0) then do;
length __uri __objName __porig personUri $256;
__porig = loginUri;
__uri = '';
__objName = '';
__n = 1;
__objectFound = 0;
personUri = "";
__numObjs = metadata_getnasn(__porig ,"AssociatedIdentity", 1, __uri);
do until(__n > __numObjs | __objectFound);
__rc = metadata_getattr(__uri, "PublicType", __objName);
if __objName="User" then do;
__rc=metadata_getattr(__uri, "Name", __objName);
__objectFound = 1;
personUri = __uri;
end;
else do;
__n = __n+1;
rc = metadata_getnasn(__porig, "AssociatedIdentity", __n, __uri);
end;
end;
if upcase("N")="Y" and not __objectFound then do;
put "*ERROR*: Object with PublicType=" "User" " not found for parent " loginUri " under AssociatedIdentity association";
stop;
end;
;
rc = metadata_getattr(personUri, "Name", person);
call symput("login_id", trim(person));
end;
run;
%put &login_id;
我不知道它有多短......但這link重點查詢元數據。
小調整可能是在數據步驟的頂部添加一個'call symput',將宏變量「login_id」設置爲空。除非由於某種原因你真的需要數據集'S',否則我會使用'data_null_'。無論如何看起來不錯。 – BellevueBob
相應編輯 - 謝謝 –