管理条目和注入自定义来源

本文档介绍了如何将有关您的独特自定义数据源的信息导入 Dataplex Universal Catalog。

Dataplex Universal Catalog 可作为所有数据资产的中央注册表。如需集成自定义来源,您需要三个关键组件:

  • 条目组:这是一个安全的容器,用于存放您的自定义数据记录。 您可以将其视为一个文件夹,用于定义记录的访问权限和地理位置(区域)。

  • 条目类型:充当模板或架构。它定义了特定类型数据资产所需的元数据字段(例如数据所有者、更新频率或质量得分)。

  • 条目:这是单个记录或资源本身(例如,特定的专有文件或数据库表)。

集成过程

如需注册自定义数据源,您需要设置以下结构:

  1. 创建条目组(文件夹)。

  2. 定义条目类型(模板/架构)。

  3. 使用文件夹中的模板创建自定义条目(数据记录)。

条目数

条目表示您要捕获其元数据的数据资产。每个条目都是条目类型的一个实例。针对条目的切面执行的每项操作都需要符合其条目类型的必需切面。例如,创建条目时,您必须为条目类型定义的所有切面类型提供值。您无法删除条目类型中标记为 required 的条目的相应切面。

条目类别

  • 系统条目:Dataplex Universal Catalog 会为 Google Cloud资源(例如 BigQuery 数据集或表)创建条目。Dataplex Universal Catalog 创建的条目称为系统条目。Dataplex Universal Catalog 会通过从受支持的 Google Cloud 系统持续同步元数据,自动保持系统条目的最新状态。

    您无法修改为系统条目自动填充的元数据(称为必需切面)。您只能使用可选切面为系统条目添加和修改其他元数据。如需了解详情,请参阅切面类别

  • 自定义条目:您可以为自定义资源创建和管理的条目称为自定义条目。自定义资源是指非 Google 服务中托管在 Google Cloud 或外部(例如本地)的资源。

条目组

条目组是一个或多个条目的容器。您可以使用条目组来管理条目的访问权限控制和区域位置。每个条目组都属于一个项目。

条目组的类别

  • 系统条目组:对于 Google Cloud 资源,Dataplex Universal Catalog 会自动为资源所在的每个项目和位置中的每个系统创建条目组。例如,@bigquery 是 BigQuery 的系统条目组。

  • 自定义条目组:您为自定义资源创建的条目组。

条目类型

条目类型使用一组必需的切面类型来定义相应类型条目的必需元数据。

您只能为条目指定必需的切面类型,而不能为条目列指定。创建特定条目类型的条目时,您必须为该条目类型指定的所有必需切面类型提供值。

在条目类型中引用的必需切面类型必须与该条目类型属于同一项目。

条目类型的类别

  • 自定义条目类型:您创建和管理的条目类型。您可以使用这些条目类型创建自定义条目。

  • 系统条目类型:Dataplex Universal Catalog 默认提供这些条目类型。系统条目类型进一步分为可重复使用和受限两类。

    下表介绍了系统条目类型的类别,以及 Dataplex Universal Catalog 为每个类别提供的条目类型列表:

    系统条目类型的类别 说明 Dataplex Universal Catalog 提供的条目类型
    可重复使用的系统条目类型 您可以使用此条目类型创建自定义条目。
    • generic
    受限的系统条目类型 这些类型预留供系统使用,例如为Google Cloud 资源创建条目。

    您无法使用这些条目类型创建条目,但可以修改这些条目类型的条目以添加可选切面。
    包括但不限于:
    • analytics-hub-exchange
    • analytics-hub-listing
    • aspecttype
    • bigquery-dataset
    • bigquery-table
    • cloudsql-database
    • cloudsql-instance
    • cloudsql-table
    • entrygroup
    • entrytype
    • sql-access
    • storage
    • storage-bucket
    • storage-folder

您可以在特定区域位置创建自定义条目类型,也可以将其创建为全球性资源。条目类型的位置会影响其适用范围。如需了解详情,请参阅项目和位置限制条件

系统条目类型始终是全球性的。系统条目类型存储在项目 ID 为 655216118709 的 Google 管理的项目中。例如 projects/655216118709/locations/global/entryTypes/bigquery-table

准备工作

在管理条目并注入自定义数据源之前,请确保您已完成本部分中所述的任务。

所需的角色

如需获得创建和管理条目所需的权限,请让您的管理员为您授予资源的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需了解详情,请参阅 Dataplex Universal Catalog IAM 角色

启用 API

在 Dataplex Universal Catalog 项目中启用 Dataplex API。

启用该 API

创建一个条目组

控制台

  1. 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 目录页面。

    前往“目录”

  2. 点击条目组 > 自定义标签页。

  3. 点击创建条目组 (Dataplex Universal Catalog)

  4. 创建条目组窗口中,输入以下内容:

    1. 可选:在显示名称字段中,输入条目组的显示名称。
    2. 条目组 ID:输入条目组的唯一 ID。
    3. 可选:在说明字段中,输入条目组的说明。
    4. 位置:选择一个位置。创建条目组后,您无法修改该位置。
  5. 可选:在标签部分中,为资源添加键值对形式的任意标签:

    1. 点击添加标签
    2. 字段中,输入一个键。
    3. 字段中,输入该键的值。
    4. 如需添加更多标签,请点击添加标签,然后重复执行上述步骤。
  6. 点击保存

gcloud

如需创建地址组,请使用 gcloud dataplex entry-groups create 命令

C#

C#

在尝试此示例之前,请按照 Dataplex Universal Catalog 快速入门:使用客户端库中的 C# 设置说明进行操作。如需了解详情,请参阅 Dataplex Universal Catalog C# API 参考文档

如需向 Dataplex Universal Catalog 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证

using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dataplex.V1;
using Google.LongRunning;

public sealed partial class GeneratedCatalogServiceClientSnippets
{
    /// <summary>Snippet for CreateEntryGroup</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void CreateEntryGroupRequestObject()
    {
        // Create client
        CatalogServiceClient catalogServiceClient = CatalogServiceClient.Create();
        // Initialize request argument(s)
        CreateEntryGroupRequest request = new CreateEntryGroupRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            EntryGroupId = "",
            EntryGroup = new EntryGroup(),
            ValidateOnly = false,
        };
        // Make the request
        Operation<EntryGroup, OperationMetadata> response = catalogServiceClient.CreateEntryGroup(request);

        // Poll until the returned long-running operation is complete
        Operation<EntryGroup, OperationMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        EntryGroup result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<EntryGroup, OperationMetadata> retrievedResponse = catalogServiceClient.PollOnceCreateEntryGroup(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            EntryGroup retrievedResult = retrievedResponse.Result;