问题描述
我想知道是否有人知道如何检索元数据表的 sas 文件夹路径?
I'm wondering if anyone knows how to retrieve the sas folder path for metadata tables?
我想列出位于元数据上的每个表的文件夹路径.
I would like to list the folder path for each tables located on metadata.
例子:
Table FactPortfolio 在管理控制台中位于以下文件夹结构下:商业-->瑞典-->投资组合-->资源-->表格
Table FactPortfolio is under the following fodler structure in management console:Commerc-->Sweden-->Portfolios-->Resources-->Tables
在 sas 的元数据浏览器中,如果单击表和树以及父树直到到达顶层层次结构,我可以找到文件夹路径.但是,我想使用 SAS 中的元数据数据步进函数来检索它.
In metadata browser in sas, I can find the folder path if I click on tables and trees and parent trees until i reach the top hierarchy. However, I would like to retrieve it with metadata data step functions in SAS.
BR乔纳斯
推荐答案
只要知道表的URI就可以推导出来,例如:
This can be derived once you know the table URI, eg as follows:
%let metauri=OMSOBJ:PhysicalTableA5HOSDWY.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;
可在此处找到获取表 URI 的示例代码 和这里.
编辑 20200920:
这里是获取表 uri 的宏:https://github.com/sasjs/core/blob/main/meta/mm_gettableid.sas
Here is a macro for getting a table uri: https://github.com/sasjs/core/blob/main/meta/mm_gettableid.sas
您还可以使用以下代码导出所有表及其元数据路径:
You can also export all tables, and their metadata paths, using this code:
* 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)
这篇关于元数据表的 SAS 文件夹路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!