如何理解URI`SASLibrary?*[@Name='L_EDW_DS'][DeployedComponents/ServerContext[@Name='SASApp']]`?

How to understand the URI `SASLibrary?*[@Name='L_EDW_DS'][DeployedComponents/ServerContext[@Name='SASApp']]`?

试图掌握 SAS 元数据的 URI(统一资源标识符),我遇到了

 Libname EDW_DS META  LIBURI="SASLibrary?*[@Name='L_EDW_DS'][DeployedComponents/ServerContext[@Name='SASApp']]";

在从 SAS Enterprise Guide 导出的代码中。

我一点一点地探索语法:

基础知识

ServerContext?* 列出了我所有的服务器,而 ServerContext?@name contains '_' 列出了名称中带有下划线的服务器。所以基本语法是

<Object type>?<condition>

组合条件

下面的两个 URI 都可以找到名称中包含 CRS 的职位 和 'reserves' 在他们的描述中:

Job?@Name contains 'CRS' and @Desc contains 'reserves'
Job?*[@Name contains 'CRS'][@Desc contains 'reserves']

因此构造 *[...][...] 相当于逻辑 and* 是一个通配符,每个 [...] 广告一个条件

涉及相关对象

下面的 URI 查找名称中包含 CRS 的职位 驻留在其名称

中包含 AML 的文件夹中
Job?*[@Name contains 'CRS'][Trees/Tree[@Name contains 'AML']]

Tree 是 SAS 元数据中文件夹中的对象类型,Trees 是将作业与该文件夹相关联的关联类型。所以现在我看到上面的 URI 和问题中的 URI 都具有结构

<Object type>?*[<Condition on object>][<Association Type>/<Related Type>[<Condition on Related>]]
再举两个例子:

您在元数据文件夹中发现 SAS Base 库的名称中包含“_IN”或“_OUT”

SASLibrary?*[@Engine ='base'][Trees/Tree[@Name contains '_IN' or @Name contains '_out']]

我混合大小写,只是为了说明大小写不敏感。

这给出了部署在我的服务器上的数据仓库库

SASLibrary?*[@Name contains 'DWH'][DeployedComponents/ServerContext[@Name='SASApp_MINE']]