2

我想知道是否有人知道如何检索元数据表的 sas 文件夹路径?

我想列出位于元数据上的每个表的文件夹路径。

例子:

Table FactPortfolio 在管理控制台中位于以下文件夹结构下:Commerc-->Sweden-->Portfolios-->Resources-->Tables

在 sas 的元数据浏览器中,如果我单击表和树以及父树直到到达顶层层次结构,我可以找到文件夹路径。但是,我想用 SAS 中的元数据数据步进函数来检索它。

BR乔纳斯

4

2 回答 2

1

在 Base 中,您可以使用 sashelp 表/字典视图,例如

/* SQL 字典 */
过程 sql ;
  创建表内存列表为
  选择 *
  来自字典表
  其中 libname='WORK'
  按 memname 排序;
退出 ;

/* 腰果 */
数据记忆表;
  设置 sashelp.vmember (where=(libname='WORK')) ;
跑 ;
于 2014-03-18T13:23:56.713 回答
1

这可以在您知道表 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;

可在此处此处找到获取表 URI 的示例代码。

编辑 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)
于 2015-11-12T18:36:32.680 回答