建立資料產品

本文適用於想要在 Knowledge Catalog (舊稱 Dataplex Universal Catalog) 建立及設定資料產品的資料產品擁有者。

如要進一步瞭解資料產品的架構和重要概念,請參閱「關於資料產品」。

事前準備

建立資料產品前,請先完成下列必要條件。

啟用 Gemini

在資料資產中設定 Gemini 是選用步驟,但強烈建議您先完成這項操作,再建立第一個資料產品。

根據預設,建立資料產品時,您必須手動輸入資產的業務說明、技術定義和新手上路文件。啟用 Gemini 整合功能後,Knowledge Catalog 會運用 AI 輔助功能,自動分析結構定義和資料掃描結果,生成下列內容:

  • 業務文件:為資料產品及其個別資料資產產生文件範本和清楚的說明。
  • 洞察資料和查詢範例:根據資產的結構定義版面配置建構可立即使用的查詢範例,讓資料消費者在獲得核准後,立即開始查詢產品。

如果選擇不啟用 Gemini,可以略過這個部分。不過,您必須在建立期間手動提供所有資產中繼資料和查詢範本。

如要進一步瞭解如何啟用 Gemini in BigQuery,請參閱「設定 Gemini in BigQuery」。

啟用 API

啟用 Dataplex 和 BigQuery API。

啟用 API 時所需的角色

如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

啟用 API

建立資料資產

確認已建立並填入資料資產 (例如 BigQuery 資料集、資料表和檢視)。

如要進一步瞭解如何建立資料資產,請參閱下列文件:

設定身分

找出或建立要在資料產品中設定的 Google 群組服務帳戶

必要的角色

本節列出下列主要章節所需的最低 IAM 角色:

  • 資料產品擁有者:建立、設定及管理資料產品和相關聯資產的使用者

  • 資料產品消費者:搜尋、查看及要求存取已發布資料產品的使用者

資料產品擁有者所需的角色

如要取得建立及管理資料產品所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備建立及管理資料產品所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立及管理資料產品,您必須具備下列權限:

  • 建立資料產品: dataplex.dataProducts.create
  • 列出專案中的資料產品: dataplex.dataProducts.list
  • 取得或查看資料產品: dataplex.dataProducts.get
  • 編輯現有資料產品: dataplex.dataProducts.update
  • 刪除資料產品: dataplex.dataProducts.delete
  • 核准資料產品存取要求: dataplex.dataProducts.approve
  • 使用 Knowledge Catalog 搜尋資料產品:
    • dataplex.dataProducts.get
    • dataplex.projects.search
  • 建立資料產品存取要求: dataplex.dataProducts.get
  • 建立資料資產: dataplex.dataAssets.create
  • 列出資料產品中的資料資產: dataplex.dataAssets.list
  • 取得資料資產: dataplex.dataAssets.get
  • 編輯現有資料資產: dataplex.dataAssets.update
  • 刪除資料資產: dataplex.dataAssets.delete
  • 建立資料掃描作業: dataplex.datascans.create
  • 列出所有資料掃描: dataplex.datascans.list
  • 取得資料掃描結果: dataplex.datascans.get
  • 執行資料掃描: dataplex.datascans.run
  • 編輯 overview 系統切面類型: dataplex.entryGroups.useOverviewAspect
  • 編輯 refresh cadence 系統切面類型: dataplex.entryGroups.useRefreshCadenceAspect
  • 編輯 queries 系統切面類型: dataplex.entryGroups.useQueriesAspect

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

資料產品消費者所需的角色

為讓資料產品消費者搜尋、查看及要求存取資料產品,資料產品擁有者必須確保資料產品可供探索。如要這麼做,請在資料產品中授予資料產品消費者下列 IAM 角色:

  • 搜尋資料產品並要求存取權: Dataplex 資料產品用戶 (dataplex.dataProductsConsumer) 和 Dataplex Catalog 檢視者 (roles/dataplex.catalogViewer)
  • 唯讀存取權,可查看資料產品定義和中繼資料: Dataplex 資料產品檢視者 (dataplex.dataProductsViewer)

建立及設定資料產品

建立資料產品時,需要完成下列高階工作:

  1. 建立資料產品

    這個必要初始步驟需要定義核心詳細資料,例如專屬資料產品名稱、說明、建立資料產品的區域,以及聯絡資料。

  2. 選用:新增素材資源

    在這個階段,您可以選取要納入資料產品的資產。重要限制是資產必須與資料產品本身位於相同區域。一次最多可以新增 10 項資產,一項資料產品最多可以有 50 項資產。

    如需支援的資產清單,請參閱「支援的資產」。

  3. 選用:設定存取權群組和資產權限

    在這個選用階段,您可以建立存取群組,簡化存取控管。這些存取群組是基礎 Google 群組和服務帳戶的別名,方便使用者辨識 (例如 AnalystReader)。接著,選取特定 IAM 角色,並將其對應至特定資產的存取群組,即可指派權限。

  4. 選填:新增合約和切面詳細資料

    在這個階段,您可以附加中繼資料架構,加強治理和資料可探索性。您可以新增合約,正式傳達資料更新頻率,並指定更新頻率、時間和差異門檻等參數。您也可以附加自訂切面,為資料產品提供額外的業務或技術中繼資料。

  5. 選用:新增其他詳細資料

    在最後階段,您會新增 RTF 文件,例如使用者入門指南、業務定義和範例查詢,協助消費者在核准後立即與資料產品互動。

如要建立及設定資料產品,請完成下列各節的步驟:

建立資料產品

控制台

  1. 前往 Google Cloud 控制台的 Knowledge Catalog「資料產品」頁面。

    前往「資料產品」

  2. 點選「建立」

  3. 在「建立資料產品」窗格中,輸入下列詳細資料:

    • 資料產品名稱:輸入資料產品的專屬名稱。
    • 資料產品 ID:這是系統自動產生的專屬 ID。 您可以編輯這個欄位。
    • 專案 ID:這是建立資料產品的專案專屬 ID。瀏覽並選取專案。
    • 區域:選取資料產品的建立區域或多區域。
    • 資料產品圖示:瀏覽並選取圖示,以視覺化方式識別資料產品。您可以視需要決定是否啟用。
    • 說明:輸入資料產品的簡要說明。
    • 聯絡人:提供控管和核准工作流程的聯絡窗口資訊:

      • 資料產品擁有者的電子郵件地址: 輸入資料產品擁有者的電子郵件地址。
      • 資料產品核准者的電子郵件地址:輸入指定核准者的電子郵件地址,負責簽署存取要求或修改。
    • 標籤:新增鍵值標籤,整理資源。這項設定為選用。

  4. 按一下「建立資料產品」

Terraform

如要建立資料產品,請使用 google_dataplex_data_productIAM 資源。

resource "google_dataplex_data_product" "default" {
  project         = "PROJECT_ID"
  location        = "LOCATION"
  data_product_id = "DATA_PRODUCT_ID"
  display_name    = "DISPLAY_NAME"
  description     = "DESCRIPTION"
  owner_emails    = ["EMAIL_IDs"]

  # Optional: Configures designated approvers for access requests
  access_approval_config {
    approver_emails = ["APPROVER_EMAIL_IDs"]
  }

  # Optional: Base64-encoded icon (Max 3.0MiB)
  icon = "ICON_BASE64_STRING"
}

resource "google_dataplex_data_product_iam_member" "consumer_binding" {
  project         = "PROJECT_ID"
  location        = "LOCATION"
  data_product_id = "DATA_PRODUCT_ID"
  role            = "roles/dataplex.dataProductsConsumer"
  member          = "MEMBER"
}

更改下列內容:

  • PROJECT_ID:專案的 ID。 Google Cloud
  • LOCATION:您要建立資料產品的區域。
  • DATA_PRODUCT_ID:資料產品的專屬 ID。
  • DISPLAY_NAME:資料產品的簡單易懂名稱。
  • DESCRIPTION:資料產品的簡短說明。
  • EMAIL_IDs:以半形逗號分隔的資料產品擁有者電子郵件地址,例如 ["user1@example.com", "user2@example.com"]
  • APPROVER_EMAIL_IDs:以半形逗號分隔的電子郵件地址清單,當中列有負責核准這個資料產品存取要求或修改的指定核准者。
  • ICON_BASE64_STRING:代表資料產品的原始 base64 編碼圖片資料。大小上限為 3.0 MiB。請勿加入資料網址配置前置字元。
  • MEMBER:接收消費者角色的使用者、服務帳戶或群組 (例如 group:all-analysts@example.com)。

C#

C#

在試用這個範例之前,請先按照「使用用戶端程式庫的 Knowledge Catalog 快速入門導覽課程」中的 C# 設定說明操作。詳情請參閱 Knowledge Catalog C# API 參考文件

如要向 Knowledge Catalog 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

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

public sealed partial class GeneratedDataProductServiceClientSnippets
{
    /// <summary>Snippet for CreateDataProduct</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 CreateDataProductRequestObject()
    {
        // Create client
        DataProductServiceClient dataProductServiceClient = DataProductServiceClient.Create();
        // Initialize request argument(s)
        CreateDataProductRequest request = new CreateDataProductRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            DataProductId = "",
            DataProduct = new DataProduct(),
            ValidateOnly = false,
        };
        // Make the request
        Operation<DataProduct, OperationMetadata> response = dataProductServiceClient.CreateDataProduct(request);

        // Poll until the returned long-running operation is complete
        Operation<DataProduct, OperationMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataProduct 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<DataProduct, OperationMetadata> retrievedResponse = dataProductServiceClient.PollOnceCreateDataProduct(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataProduct retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Go

在試用這個範例之前,請先按照「使用用戶端程式庫的 Knowledge Catalog 快速入門導覽課程」中的 Go 設定說明操作。詳情請參閱 Knowledge Catalog Go API 參考文件

如要向 Knowledge Catalog 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。


//go:build examples

package main

import (
	"context"

	dataplex "cloud.google.com/go/dataplex/apiv1"
	dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb"
)

func main() {
	ctx := context.Background()
	// 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://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := dataplex.NewDataProductClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &dataplexpb.CreateDataProductRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#CreateDataProductRequest.
	}
	op, err := c.CreateDataProduct(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp,