SAS元数据对象详细信息-SASLibraries,PhysicalTables,作业

时间:2019-05-11 23:22:06

标签: sas sas-metadata

我已经使用此代码来获取所有SAS库,物理表和作业的对象列表。 https://github.com/Boemska/macrocore/blob/master/meta/mm_getobjects.sas 我现在需要获取这些对象的详细信息, 就像图书馆一样-我需要它们的libname和完整路径, Teradata库-架构名称,库路径 物理表-位置和其他属性 职位-位置和其他属性。

对于如何报告或报告哪些属性我不太熟悉,但是我绝对需要它们的路径和属性。 谢谢。

2 个答案:

答案 0 :(得分:1)

您所引用的示例使用的是proc metadata,它返回您需要理解和处理的XML。真正的问题是您必须学习如何构建输入XML来构建元数据查询,这是一件相当复杂的事情。

也许更直接的方法是使用数据步元数据功能,例如here

METABROWSE命令对于理解元数据对象关系(如果您有权访问SAS Foundation)很有用,请参阅here

答案 1 :(得分:0)

您要查询的属性将根据您要检查的库引擎而变化。

以下宏将为BASE,OLEDB,ODBC和POSTGRES引擎生成一个libname:

https://github.com/Boemska/macrocore/blob/master/meta/mm_assigndirectlib.sas

根据以下答案,可以使用直接属性:How to get details of metadata objects in SAS

根据this answer,文件夹路径可用:

%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;