【问题标题】:SAS Metadata Objects Details - SASLibraries, PhysicalTables, JobsSAS 元数据对象详细信息 - SASLibraries、PhysicalTables、作业
【发布时间】:2020-07-29 07:28:25
【问题描述】:

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

我不太了解我们可以如何报告或报告哪些属性,但我绝对需要他们的路径和属性。 谢谢。

【问题讨论】:

  • 您需要来自元数据服务器定义的信息吗?还是当前 SAS 会话中活动 librefs 的信息?
  • 我需要它来自元数据存储库。

标签: sas sas-metadata


【解决方案1】:

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

也许更直接的方法是使用像here 这样的数据步元数据函数。

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

【讨论】:

  • 感谢 Vasja,这种数据步骤方法很有效,而且速度也很快,您知道我们可以使用哪些选项来为物理表和作业实现相同的目标吗?
【解决方案2】:

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

以下宏将为 BASE、OLEDB、ODBC 和 POSTGRES 引擎生成一个 libname(请注意,存储库已移动):

https://github.com/sasjs/core/blob/main/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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多