WhereHows项目数据集操作指南:创建与删除数据集详解
2025-07-06 06:01:13作者:翟江哲Frasier
数据集在元数据模型中的重要性
在WhereHows项目的元数据管理体系中,数据集(Dataset)是最核心的实体之一。数据集代表了组织内各种形式的数据集合,包括但不限于:
- 数据库中的表和视图(如BigQuery、Snowflake、Redshift等)
- 流处理环境中的数据流(如Kafka、Pulsar等)
- 数据湖系统中的文件和目录(如S3、ADLS等)
数据集作为数据资产的基本单元,是元数据管理的基础对象,也是数据血缘、数据质量等高级功能的基础。
本教程目标
本教程将详细介绍如何在WhereHows项目中:
- 创建包含多个字段的数据集
- 删除不再需要的数据集
准备工作
在开始本教程前,请确保已完成以下准备工作:
- 已部署WhereHows项目的快速启动环境
- 已导入示例数据
- 已配置好开发环境(如需使用编程接口)
创建数据集操作指南
通过Java API创建数据集
// 示例代码展示了如何创建一个名为realestate_db.sales的数据集
// 该数据集包含三个字段:property_id、sale_price和sale_date
DatasetProperties properties = new DatasetProperties()
.setDescription("房地产销售数据集")
.setCustomProperties(ImmutableMap.of(
"数据来源", "内部CRM系统",
"更新频率", "每日"
));
SchemaMetadata schemaMetadata = new SchemaMetadata()
.setSchemaName("sales_schema")
.setPlatform(Urn.createFromString("urn:li:dataPlatform:hive"))
.setVersion(1)
.setHash("")
.setPlatformSchema(PlatformSchema.builder()
.setKafkaSchema(new KafkaSchema())
.build())
.setFields(new SchemaFieldArray(
new SchemaField()
.setFieldPath("property_id")
.setType(SchemaFieldDataType.create(new NumberType()))
.setDescription("房产唯一标识符"),
new SchemaField()
.setFieldPath("sale_price")
.setType(SchemaFieldDataType.create(new NumberType()))
.setDescription("销售价格(美元)"),
new SchemaField()
.setFieldPath("sale_date")
.setType(SchemaFieldDataType.create(new DateType()))
.setDescription("销售日期")
));
// 构建数据集实体
DatasetKey datasetKey = new DatasetKey()
.setName("sales")
.setOrigin(FabricType.PROD)
.setPlatform(Urn.createFromString("urn:li:dataPlatform:hive"));
DatasetEntity dataset = new DatasetEntity()
.setKey(datasetKey)
.setProperties(properties)
.setSchemaMetadata(schemaMetadata);
// 提交创建请求
entityClient.update(new EntityUpdateRequest().setEntity(dataset));
通过Python API创建数据集
# Python示例代码展示了相同功能的实现
from wherehows.client import WhereHowsClient
from wherehows.models import *
client = WhereHowsClient()
# 定义数据集元数据
dataset_properties = {
"name": "realestate_db.sales",
"description": "房地产销售数据集",
"customProperties": {
"数据来源": "内部CRM系统",
"更新频率": "每日"
}
}
# 定义数据集结构
schema_metadata = {
"schemaName": "sales_schema",
"fields": [
{
"fieldPath": "property_id",
"type": "NUMBER",
"description": "房产唯一标识符"
},
{
"fieldPath": "sale_price",
"type": "NUMBER",
"description": "销售价格(美元)"
},
{
"fieldPath": "sale_date",
"type": "DATE",
"description": "销售日期"
}
]
}
# 创建数据集
response = client.create_dataset(
platform="hive",
name="sales",
properties=dataset_properties,
schema_metadata=schema_metadata
)
创建操作预期结果
成功执行上述操作后,系统将创建一个名为realestate_db.sales
的数据集,该数据集包含三个字段,并附带完整的元数据描述。在WhereHows的UI界面中,可以查看到新创建的数据集及其完整结构。
删除数据集操作指南
当数据集不再需要、包含错误或敏感信息,或是仅为测试目的创建时,可能需要删除数据集。WhereHows提供两种删除方式:
- 软删除:将实体的状态标记为"已移除",UI中将不再显示该实体及其所有属性
- 硬删除:物理删除该实体的所有相关数据记录
通过GraphQL进行软删除
mutation batchUpdateSoftDeleted {
batchUpdateSoftDeleted(input: {
urns: ["urn:li:dataset:(urn:li:dataPlatform:hive,fct_users_deleted,PROD)"],
deleted: true
})
}
成功执行后将返回:
{
"data": {
"batchUpdateSoftDeleted": true
},
"extensions": {}
}
通过Python API删除数据集
from wherehows.client import WhereHowsClient
client = WhereHowsClient()
# 指定要删除的数据集URN
dataset_urn = "urn:li:dataset:(urn:li:dataPlatform:hive,fct_users_deleted,PROD)"
# 执行软删除
client.soft_delete(entity_urn=dataset_urn)
# 或者执行硬删除
client.hard_delete(entity_urn=dataset_urn)
删除操作预期结果
成功删除数据集后,在WhereHows的UI界面中搜索该数据集名称将不再显示任何结果。对于软删除的数据集,管理员仍可通过特殊查询恢复;而硬删除的数据集将永久消失。
最佳实践建议
- 生产环境谨慎操作:删除操作特别是硬删除不可逆,建议生产环境实施前进行充分测试
- 权限控制:确保只有授权用户才能执行删除操作
- 删除前备份:重要数据建议在执行删除前备份元数据
- 操作审计:所有创建和删除操作都应记录详细日志
通过本教程,您应该已经掌握了在WhereHows项目中创建和管理数据集的基本方法。这些操作是元数据管理的基础,为后续的数据发现、数据血缘分析等功能奠定了基础。