我想知道是否有人知道如何检索元数据表的 sas 文件夹路径?
我想列出位于元数据上的每个表的文件夹路径。
例子:
Table FactPortfolio 在管理控制台中位于以下文件夹结构下:Commerc-->Sweden-->Portfolios-->Resources-->Tables
在 sas 的元数据浏览器中,如果我单击表和树以及父树直到到达顶层层次结构,我可以找到文件夹路径。但是,我想用 SAS 中的元数据数据步进函数来检索它。
BR乔纳斯
我想知道是否有人知道如何检索元数据表的 sas 文件夹路径?
我想列出位于元数据上的每个表的文件夹路径。
例子:
Table FactPortfolio 在管理控制台中位于以下文件夹结构下:Commerc-->Sweden-->Portfolios-->Resources-->Tables
在 sas 的元数据浏览器中,如果我单击表和树以及父树直到到达顶层层次结构,我可以找到文件夹路径。但是,我想用 SAS 中的元数据数据步进函数来检索它。
BR乔纳斯
在 Base 中,您可以使用 sashelp 表/字典视图,例如
/* SQL 字典 */ 过程 sql ; 创建表内存列表为 选择 * 来自字典表 其中 libname='WORK' 按 memname 排序; 退出 ; /* 腰果 */ 数据记忆表; 设置 sashelp.vmember (where=(libname='WORK')) ; 跑 ;
这可以在您知道表 URI 后推导出来,例如如下:
%let metauri=OMSOBJ:PhysicalTable\A5HOSDWY.BE0006N9;
/* get metadata paths */
data ;
length tree_path $500 tree_uri parent_uri parent_name $200;
call missing(tree_path,tree_uri,parent_uri,parent_name);
drop tree_uri parent_uri parent_name rc ;
uri="&metauri";
rc=metadata_getnasn(uri,"Trees",1,tree_uri);
rc=metadata_getattr(tree_uri,"Name",tree_path);
do while (metadata_getnasn(tree_uri,"ParentTree",1,parent_uri)>0);
rc=metadata_getattr(parent_uri,"Name",parent_name);
tree_path=strip(parent_name)||'/'||strip(tree_path);
tree_uri=parent_uri;
end;
tree_path='/'||strip(tree_path);
run;
编辑 20200920:
这是获取表 uri 的宏: https ://github.com/sasjs/core/blob/main/meta/mm_gettableid.sas
您还可以使用以下代码导出所有表及其元数据路径:
* load macros;
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;
* invoke macro;
%mm_tree(root=%str(/) ,types=Table ,outds=myoutputdataset)