Data Domain 数据域
Data Domain是什么?
DataHub从v0.8.25开始支持针对数据资产进行数据域管理
Data Domain是数据资产的逻辑分组集合,目前一个数据资产一次只能属于一个Data Domain
Data Domain是对数据资产的显式分组、顶级分类。
- 从数据库管理的角度来看,数据域表示数据元素可能包含的值的集合,如性别列的数据域是“男性”、“女性”、“非二进制”或“未指定”4个值。
- 从数据治理的角度来看,数据域是“组织感兴趣的项或组织内感兴趣的区域的逻辑分组”。
- 可以将数据域视为数据的高级类别,目的是为数据分配责任和职责。
- 在数据治理中,数据领域也称为“主题领域”
- Data sub-domain 数据子域:通常每个数据域都有3到10个数据子域。
如针对电商的顾客这一数据领域,对应的数据子域:个体、团体、公司、家庭、慈善机构等等
Tags、Glossary Terms、Domains的区别
DataHub支持使用标签、术语表术语、域 来划分不同类型的元数据,以适合特定的目的:
- Tags 标签: 非正式的,松散的控制标签,作为搜索和发现的工具。资产可能有多个标签。没有正式的集中管理。
- Glossary Terms 术语表术语: 受控词汇表,具有可选的层次结构。术语通常用于规范叶级属性(即模式字段)的类型。例如(EMAIL_PLAINTEXT)
- Domains 领域: 一组顶级类别,通常与资产最相关的业务单元/专业领域相结合。集中或分布式管理。每个数据资产只能属于一个领域。
DataHub针对Data Domain的支持
数据域列表
数据域详情
按数据域搜索
Domains API
可以在postman中测试下面的API,
注意:
- 需要在请求的header中增加如下:
- X-DataHub-Actor : urn:li:corpuser:datahub
- Content-Type : application/json
- 将body的类型设置为GraphQL
增加或修改数据域
默认情况下【即不指定id】将生成一个随机UUID来唯一地标识该数据域(domain id)。
如果想提供一个自定义、可读的id来更容易地跟踪这个数据域,可通过参数id进行设置。
请注意,创建后不能轻易更改域id
mutation createDomain {
createDomain(input: {
name: "售后",
description: "所有涉及售后服务的数据",
id: "f8ec332a-b615-4aa7-9769-eac816f5f43e"
})
}
设置数据资产属于哪一个域
mutation setDomain {
setDomain(entityUrn: "urn:li:dataset:(urn:li:dataPlatform:hdfs,SampleHdfsDataset,PROD)", domainUrn: "urn:li:domain:knowledge-lib")
}
查询某一个域
query getDomain {
domain(urn: "urn:li:domain:knowledge-lib") {
id
type
urn
properties {
name
description
}
entities {
total
}
}
}
查询域列表
query getListDomains {
listDomains(input: {start:0,count:10}) {
start
count
total
domains {
urn
id
properties {
name
description
}
entities(input: { start: 0, count: 1 }) {
total
}
}
}
}
目前版本存在的问题
删除数据域目前不支持
mutation unsetDomain {
unsetDomain (entityUrn:"urn:li:domain:486c1fbe-04bb-4878-b603-312256c94c10")
}
报如下异常:
Caused by: java.lang.RuntimeException: Failed to unset Domains for resource with entity urn urn:li:domain:486c1fbe-04bb-4878-b603-312256c94c10
at com.linkedin.datahub.graphql.resolvers.domain.UnsetDomainResolver.lambda$get$0(UnsetDomainResolver.java:69)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
... 5 common frames omitted
Caused by: java.lang.RuntimeException: Unknown aspect domains for entity domain
at com.linkedin.metadata.entity.EntityService.ingestProposal(EntityService.java:388)
at com.linkedin.entity.client.JavaEntityClient.ingestProposal(JavaEntityClient.java:381)
at com.linkedin.datahub.graphql.resolvers.domain.UnsetDomainResolver.lambda$get$0(UnsetDomainResolver.java:65)
... 6 common frames omitted
参考
Datahub Domains Guide
what-is-a-data-domain-examples-included