I have a list of metadata objects from my repository. I\'ve fetched all SASLibrary, PhysicalTable, Jobs objects. Now I need to fetch all their details. Can someone please sugge
ok, assuming you have a dataset (have
) which contains those objects, and that the uri is stored in a variable called uri
then the following should suffice:
data associations;
keep assoc assocuri name;
length assoc assocuri name $256;
set have;
rc1=1;n1=1;
do while(rc1>0);
/* Walk through all possible associations of this object. */
rc1=metadata_getnasl(uri,n1,assoc);
rc2=1;n2=1;
do while(rc2>0);
/* Walk through all the associations on this machine object. */
rc2=metadata_getnasn(uri,trim(assoc),n2,assocuri);
if (rc2>0) then do;
rc3=metadata_getattr(assocuri,"Name",name);
output;
end;
call missing(name,assocuri);
put arc= rc2=;
n2+1;
end;
n1+1;
end;
run;
proc sort data=associations;
by assoc name;
run;
proc sql;
create table groupassoc as
select assoc, count(*) as cnt
from associations
group by 1;
data attrprop;
keep type name value;
length type $4 name $256 value $32767;
set have;
rc1=1;n1=1;type='Prop';
do while(rc1>0);
rc1=metadata_getnprp(uri,n1,name,value);
if rc1>0 then output;
n1+1;
end;
rc1=1;n1=1;type='Attr';
do while(rc1>0);
rc1=metadata_getnatr(uri,n1,name,value);
if rc1>0 then output;
n1+1;
end;
run;
proc sort data=attrprop;
by type name;
run;
This information can also be obtained using metabrowse
in Base SAS.
for example call this macro for metaobjects intereseting to you. The fullList table will contains all your interesting objects with metaId and object type:
options Metaport=portnumber;
options MetaUser="userid";
options Metapass="password";
options MetaServer="serverName";
options metaprotocol=bridge;
data fullList;
length objName $60 objId $17 objType $50;;
delete;
run;
%macro getMeta(objType);
data temp(keep=objType objName objId);
length uri $256 objName $60 objId $17 objType $50;
uri="";n=1;TableName="";
objType="&objType";
do while(metadata_getnobj("omsobj:&objType?@Id ? '.'",n,uri) >= 0);
rc=metadata_getattr(uri,"Name",objName);
rc=metadata_getattr(uri,"Id",objId);
n=n+1;
output;
end;
run;
proc append base=fullList data=temp;
run;
%mend;
%getMeta(Person);
%getMeta(PhysicalTable);
%getMeta(Job);
%getMeta(JFob);
.
.
. if you want .....