首页
/ WhereHows项目数据集操作指南:创建与删除数据集详解

WhereHows项目数据集操作指南:创建与删除数据集详解

2025-07-06 06:01:13作者:翟江哲Frasier

数据集在元数据模型中的重要性

在WhereHows项目的元数据管理体系中,数据集(Dataset)是最核心的实体之一。数据集代表了组织内各种形式的数据集合,包括但不限于:

  • 数据库中的表和视图(如BigQuery、Snowflake、Redshift等)
  • 流处理环境中的数据流(如Kafka、Pulsar等)
  • 数据湖系统中的文件和目录(如S3、ADLS等)

数据集作为数据资产的基本单元,是元数据管理的基础对象,也是数据血缘、数据质量等高级功能的基础。

本教程目标

本教程将详细介绍如何在WhereHows项目中:

  1. 创建包含多个字段的数据集
  2. 删除不再需要的数据集

准备工作

在开始本教程前,请确保已完成以下准备工作:

  1. 已部署WhereHows项目的快速启动环境
  2. 已导入示例数据
  3. 已配置好开发环境(如需使用编程接口)

创建数据集操作指南

通过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提供两种删除方式:

  1. 软删除:将实体的状态标记为"已移除",UI中将不再显示该实体及其所有属性
  2. 硬删除:物理删除该实体的所有相关数据记录

通过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界面中搜索该数据集名称将不再显示任何结果。对于软删除的数据集,管理员仍可通过特殊查询恢复;而硬删除的数据集将永久消失。

最佳实践建议

  1. 生产环境谨慎操作:删除操作特别是硬删除不可逆,建议生产环境实施前进行充分测试
  2. 权限控制:确保只有授权用户才能执行删除操作
  3. 删除前备份:重要数据建议在执行删除前备份元数据
  4. 操作审计:所有创建和删除操作都应记录详细日志

通过本教程,您应该已经掌握了在WhereHows项目中创建和管理数据集的基本方法。这些操作是元数据管理的基础,为后续的数据发现、数据血缘分析等功能奠定了基础。