使用Atlas进行元数据管理之Glossary(术语)
背景:笔者和团队的小伙伴近期在进行数据治理/元数据管理方向的探索, 在接下来的系列文章中, 会陆续与读者们进行分享在此过程中踩过的坑和收获。
元数据管理系列文章:
[0] - 使用Atlas进行元数据管理之Atlas简介
[1] - 使用Atlas进行元数据管理之Glossary(术语)
[2] - 使用Atlas进行元数据管理之Type(类型)
1. Glossary(术语表) 介绍
Atlas的术语表(Glossary)提供了一些适当的“单词”,这些“单词”能彼此进行关连和分类,以便业务用户在使用的时候,即使在不同的上下文中也能很好的理解它们。此外,这些术语也是可以映射到数据资产中的,比如:数据库,表,列等。
术语表抽象出了和数据相关的专业术语,使得用户能以他们更熟悉的方式去查找和使用数据。
1.1 术语表功能
- 能够使用自然语言(技术术语和/或业务术语)定义丰富的术语词汇表。
- 能够将术语在语义上相互关联。
- 能够将资产映射到术语表中。
- 能够按类别划分这些术语。这为术语增加了更多的上下文。
- 允许按层次结构排列类别,能展示更广泛和更精细的范围。
- 从元数据中独立管理术语表。
1.2 术语(Term)
对于企业来说术语作用的非常大的。对于有用且有意义的术语,需要围绕其用途和上下文进行分组。 Apache Atlas中的术语必须具有唯一的qualifiedName,可以有相同名称的术语,但它们不能属于同一个术语表。具有相同名称的术语只能存在于不同的术语表中。
术语名称可以包含空格,下划线和短划线(作为引用单词的自然方式)但不包含“。”或“@”,因为qualifiedName的格式为:<术语>@<术语限定名>
。限定名称可以更轻松地使用特定术语。
术语只能属于单个术语表,并且它们的生命周期也是相同的,如果删除术语表,则术语也会被删除。术语可以属于零个或多个类别,这允许将它们限定为更小或更大的上下文。
可以在Apache Atlas中为一个或多个实体分配/链接一个术语。可以使用分类(classifications
,类似标签的作用)对术语进行分类,并将相同的分类应用于分配术语的实体。
1.3 类别(Category)
类别是组织术语的一种方式,以便可以丰富术语的上下文。
类别可能包含也可能不包含层次结构,即子类别层次结构。类别的qualifiedName是使用它在术语表中的分层位置导出的,例如:<类别名称>.<父类别限定名>
。当发生任何层级更改时,此限定名称都会更新,例如:添加父类别,删除父类别或更改父类别。
2. Atlas Web UI
Apache Atlas UI提供了友好的用户界面,可以使用术语表相关的功能,其中包括:
- 创建术语表,术语和类别
- 在术语之间创建各种关系: synonymns(同义词),antonymns(反义词),seeAlso(参考)
- 调整类别的层次结构中
- 为实体分配实体(entities)
- 使用关联术语搜索实体
与术语表相关的UI都可以在GLOSSARY
的Tab下找到。
2.1 Glossary Tab
Apache Atlas UI提供了两种使用术语表的方法: 术语(Terms)视图
和类别(Category)视图
。
(1) 术语视图(Terms)
术语视图允许用户执行以下操作:
- 创建,更新和删除术语
- 添加,删除和更新与术语关联的分类
- 添加,删除和更新术语的分类
- 在术语之间创建各种关系
- 查看与术语关联的实体
(2) 类别视图(Category)
类别视图允许用户执行以下操作:
- 创建,更新和删除类别和子类别
- 将术语与类别相关联
用户可以使用术语表选项卡中提供的切换在术语视图和类别视图之间切换。
2.2 术语视图(Terms)
-
创建一个新术语
单击术语表名称旁边的省略号(...)会显示一个弹出式菜单,允许用户在术语表中创建术语或删除术语表 - 如下所示。
-
删除一个术语
单击术语名称旁边的省略号(...)会显示一个弹出式菜单,允许用户删除该术语 - 如下所示。
2.2.1 术语详情
选择术语表UI中的术语,可以查看对应术语的各种详细信息。详细信息页面下的每个选项卡提供该术语的不同详细信息。
Entities(实体)
选项卡:显示分配给所选术语的实体Classifications(分类)
选项卡:显示与所选术语关联的分类Related terms (相关术语)
选项卡:显示与所选术语相关的术语
2.2.2 给术语添加分类(classification)
单击分类标签旁边的+
可为术语添加分类。
2.2.3 与其他术语建立术语关联
查看术语详细信息时,单击Related Terms(相关术语)
选项卡。单击+
将术语与当前术语链接。
2.2.4 对术语进行分类
单击类别标签旁边的+
可对术语进行分类。将提供模态对话框以选择类别。
2.3 类别视图(Category)
当切换开关处于Category
时,左侧面板将列出所有术语表以及类别层次结构。
2.3.1 类别菜单(Category)
单击Category
旁边的省略号...
将显示类别上下文菜单。
-
创建新类别
-
创建子类别或删除类别
2.3.2 类别详情
选择Category
后,详细信息将显示在右侧窗口中。
2.3.3 术语分类
单击详情页中Terms
标签旁边的+
链接所选类别下的术语。
3. 术语分配流程
可以在搜索结果页和Glossary-Terms
实体详情页中给entity(实体)
分配术语。
3.1 分配术语
在搜索结果页面,点击terms
列下的+
点击terms
标签旁边的+
这两个操作都将显示下面的结果,按照屏幕上的提示完成术语分配。
3.2 分类传播(Propagated classification)
如果一个术语具有分类,则该术语下的实体继承相同的分类。
3.3. 使用术语搜索
Apache Atlas基本搜索API和UI已更新,以支持术语作为搜索条件。允许用户查找与给定术语相关联的实体。
4. REST API
Atlas支持以下操作,可在这里找到REST接口的详细信息。
5.1 JSON结构
- Glossary
{
"guid": "2f341934-f18c-48b3-aa12-eaa0a2bfce85",
"qualifiedName": "SampleBank",
"displayName": "Banking",
"shortDescription": "Glossary of bank",
"longDescription": "Glossary of bank - long description",
"language": "English",
"usage": "N/A",
"terms": [
{
"termGuid": "502d34f1-b85f-4ad9-9d9f-fe7020ff0acb",
"relationGuid": "6bb803e4-3af6-4924-aad6-6ad9f95ecd14",
"displayText": "A savings account"
}, {
"termGuid": "e441a540-ee55-4fc8-8eaf-4b9943d8929c",
"relationGuid": "dbc46795-76ff-4f68-9043-be0eff0bc0f3",
"displayText": "15-30 yr mortgage"
}, {
"termGuid": "998e3692-51a8-47fe-b3a0-0d9f794437eb",
"relationGuid": "0dcd31b9-a81c-4185-ad4b-9209a97c305b",
"displayText": "A checking account"
}, {
"termGuid": "c4e2b956-2589-4648-8596-240d3bea5e44",
"relationGuid": "e71c4a5d-694b-47a5-a41e-126ade857279",
"displayText": "ARM loans"
}],
"categories": [{
"categoryGuid": "dd94859e-7453-4bc9-b634-a17fc14590f8",
"parentCategoryGuid": "e6a3df1f-5670-4f9e-84da-91f77d008ce3",
"relationGuid": "a0b7da02-1ccd-4415-bc54-3d0cdb8857e7",
"displayText": "Accounts"
}, {
"categoryGuid": "e6a3df1f-5670-4f9e-84da-91f77d008ce3",
"relationGuid": "0e84a358-a4aa-4bd3-b806-497a6962ae1d",
"displayText": "Customer"
}, {
"categoryGuid": "7f041401-de8c-443f-a3b7-7bf5a910ff6f",
"parentCategoryGuid": "e6a3df1f-5670-4f9e-84da-91f77d008ce3",
"relationGuid": "7757b031-4e25-43a8-bf77-946f7f06c67a",
"displayText": "Loans"
}]
}
- Term
{
"guid": "e441a540-ee55-4fc8-8eaf-4b9943d8929c",
"qualifiedName": "fixed_mtg@SampleBank",
"displayName": "15-30 yr mortgage",
"shortDescription": "Short description",
"longDescription": "Long description",
"examples": ["N/A"],
"abbreviation": "FMTG",
"anchor": {
"glossaryGuid": "2f341934-f18c-48b3-aa12-eaa0a2bfce85",
"relationGuid": "dbc46795-76ff-4f68-9043-be0eff0bc0f3"
},
"categories": [{
"categoryGuid": "7f041401-de8c-443f-a3b7-7bf5a910ff6f",
"relationGuid": "b4cddd33-7b0c-41e2-9324-afe549ec6ada",
"displayText": "Loans"
}],
"seeAlso" : [],
"synonyms" : [],
"antonyms" : [],
"replacedBy" : [],
"replacementTerms" : [],
"translationTerms" : [],
"translatedTerms" : [],
"isA" : [],
"classifies" : [],
"preferredTerms" : [],
"preferredToTerms": [ {
"termGuid" : "c4e2b956-2589-4648-8596-240d3bea5e44",
"displayText": "ARM Loans"
}]
}
- Category
{
"guid": "7f041401-de8c-443f-a3b7-7bf5a910ff6f",
"qualifiedName": "Loans.Customer@HortoniaBank",
"displayName": "Loans",
"shortDescription": "Loan categorization",
"anchor": {
"glossaryGuid": "2f341934-f18c-48b3-aa12-eaa0a2bfce85",
"relationGuid": "7757b031-4e25-43a8-bf77-946f7f06c67a"
},
"parentCategory": {
"categoryGuid": "e6a3df1f-5670-4f9e-84da-91f77d008ce3",
"relationGuid": "8a0a8e11-0bb5-483b-b7d6-cfe0b1d55ef6"
},
"childrenCategories" : [],
"terms": [{
"termGuid": "e441a540-ee55-4fc8-8eaf-4b9943d8929c",
"relationGuid": "b4cddd33-7b0c-41e2-9324-afe549ec6ada",
"displayText": "15-30 yr mortgage"
}, {
"termGuid": "c4e2b956-2589-4648-8596-240d3bea5e44",
"relationGuid": "8db1e784-4f04-4eda-9a58-6c9535a95451",
"displayText": "ARM loans"
}]
}
5.2 CURD
5.2.1 创建操作(CREATE)
- 创建术语表
- 创建一个术语
- 创建分类术语
- 用关系创建术语
- 创建一个类别
- 创建具有层次结构的类别
- 创建类别并对术语进行分类
- 为实体分配术语
注意:
- 在创建操作期间,术语表,术语和类别将获得自动分配的GUID和qualifiedName。
- 要创建包含子项的类别,必须事先创建子项。
- 要创建属于某个类别的术语,必须事先创建该类别。
- 要创建关系术语,必须事先创建相关术语。
5.2.2 读操作(READ)
- 通过GUID获取术语表 - 提供属于术语表的所有术语和类别(标题)。
- 获取所有术语表 - 为所有术语表提供他们的术语和类别(标题)。
- 通过GUID获取术语 - 提供有关术语,其所属类别(如果有)以及任何相关术语的详细信息。
- 通过GUID获取类别 - 提供有关类别,类别层次结构(如果有)和属于该类别的术语的详细信息。
- 获取给定术语表的所有术语 - 提供属于给定术语表的所有术语(具有#3中提到的详细信息)。
- 获取给定术语表的所有类别 - 提供属于给定术语表的所有类别(具有#4中提到的详细信息)。
- 获取与给定术语相关的所有术语 - 提供与给定术语相关/链接的所有术语。
- 获取与给定类别(父母和子女)相关的所有类别
- 获取给定类别的所有条款
5.2.3 更新操作(UPDATE)
- 局部更新术语表
- 局部更新术语
- 局部更新类别
- 更新给定的词汇表
- 更新给定的术语
- 更新给定的类别
注意:
- 局部更新仅处理词汇表模型文件中定义的原始属性。
- 分配后,无法更改GUID和qualifiedName。唯一的方法是删除并重新创建所需的对象。
- 在任何更新中都无法删除锚点
- 更新API期望在GET调用之后就地修改JSON。任何缺失的属性/关系都将被删除。
- 对类别层次结构的任何更新都会导致对其下的层次结构进行级联更新,例如锚更改会影响所有子项,父项更改会影响self和children的qualifiedName。
5.2.4 删除操作(DELETE)
- 删除术语表 - 删除锚定到给定词汇表的所有类别和术语。如果已为实体分配任何术语,则会阻止此删除。
- 删除术语 - 仅当术语未与任何实体关联/分配时才删除该术语。
- 删除类别 - 仅删除给定类别,所有子项都成为顶级类别。
- 从实体中删除术语分配