我正在构建一个利用表对象的 SAS 元数据 ID(或 URI)的实用程序。当库使用 BASE 引擎时,以下代码可以很好地获取 ID:
%let mylib=SOMELIB;
data output (keep=uri dataname);
length uri $100 dataname $256;
uri='';
i=1;
do until (rc<0);
rc=metadata_getnasn("omsobj:SASLibrary?@Libref='&mylib'","Tables",i,uri);
put rc=;
prc=metadata_getattr(uri,"Name",dataname);
if rc>=0 then output;
i+1;
put i=;
end;
run;
然而,对于其他库引擎(例如OLEDB、ODBC、REMOTE),SAS 会将信息存储在不同的属性中(例如在“UsingPackages/[my db]/Tables”下)。我可以为遇到的每个库引擎编写条件逻辑,但想知道是否有更简单/更通用的方法来获取表 ID?
同样的问题反过来也会发生(如果我搜索表,我仍然需要 SASLibrary 以确保它是唯一的)。
本文中的代码对我们的 SAS 管理员非常有帮助:
http://support.sas.com/documentation/cdl/en/lrmeta/63180/HTML/default/viewer.htm#p1k9zipe59ha2an1pq34gu143lay.htm http://support.sas.com/documentation/cdl/en/lrmeta/63180/HTML/default/viewer.htm#p1k9zipe59ha2an1pq34gu143lay.htm
示例:列出库及其服务器上下文
该程序使用 SAS 元数据 DATA 步骤函数返回更多
有关图书馆的详细信息。结果返回到
a Work 库中的 Libraries 数据集。请求的数据包括
库元数据 ID、库名称、libref、引擎、路径
文件系统(或者如果是 DBMS 数据,则为 DBMS 路径)和服务器上下文
与该库关联的。
它会给你你想要的一切,甚至更多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)