1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GCPのData Catalogの概要と機能

目次

概要

GCPのData Catalogは、データの探索、検索、モデリング、データガバナンスを容易にするためのメタデータ管理サービスです。Data Catalogを使用することで、組織内のデータリソースを中央集中的に管理し、データの可視性を向上させることができます。

Data Catalogは、データ資産に関連するメタデータ(データの特性や関連情報)を統合したデータカタログを提供し、以下のような機能を提供します。

機能/詳細

メタデータ管理

Data Catalogは、データリソースのメタデータを一元管理します。メタデータには、データセット、テーブル、ビュー、ストアドプロシージャなどのデータリソースの情報が含まれます。メタデータは階層的に組織され、関連データリソースを簡単に見つけることができます。

以下は、Data Catalogのメタデータを管理する方法の一例です。

import com.google.cloud.datacatalog.v1beta1.DataCatalogClient;
import com.google.cloud.datacatalog.v1beta1.Entry;
import com.google.cloud.datacatalog.v1beta1.FormatType;
import com.google.cloud.datacatalog.v1beta1.LookupEntryRequest;

public class DataCatalogManager {
    private final DataCatalogClient dataCatalogClient;

    public DataCatalogManager() {
        dataCatalogClient = DataCatalogClient.create();
    }

    public void lookupEntry(String entryName) {
        LookupEntryRequest request = LookupEntryRequest.newBuilder()
                .setLinkedResource(entryName)
                .setSqlResource(entryName)
                .setFullyQualifiedName(entryName)
                .build();

        Entry entry = dataCatalogClient.lookupEntry(request);
        System.out.println("Entry: " + entry);
    }
}

データの探索と検索

Data Catalogを使用すると、標準のメタデータフィールドやカスタムフィールドを使用してデータを探索および検索できます。データの検索は、キーワード、属性、または特定のデータリソースに関連するメタデータを使用して行うことができます。

package main

import (
	"context"
	"fmt"
	datacatalog "google.golang.org/genproto/googleapis/cloud/datacatalog/v1beta1"
	datacatalogpb "google.golang.org/genproto/googleapis/cloud/datacatalog/v1beta1"
	"google.golang.org/grpc"
)

func main() {
	ctx := context.Background()
	conn, err := grpc.DialContext(ctx, "datacatalog.googleapis.com:443", grpc.WithTransportCredentials(
		creds.NewClientTLSFromCert(nil, "")))
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	client := datacatalogpb.NewDataCatalogClient(conn)
	searchResult, err := client.SearchCatalog(ctx, &datacatalogpb.SearchCatalogRequest{
		Scope: fmt.Sprintf("projects/%s/locations/%s", "your-project", "your-location"),
		Query: "your-query",
	})
	if err != nil {
		panic(err)
	}

	fmt.Printf("Search Result: %v\n", searchResult)
}

データモデリング

Data Catalogでは、データリソースに対して構造化されたメタデータ(スキーマ)を定義することができます。これにより、データリソースの構造やフィールドの詳細を表現し、データの正確な記述を可能にします。

using Google.Cloud.DataCatalog.V1Beta1;
using System;

public class DataCatalogModeling
{
    public static void CreateSchema(string projectId, string location, string entryGroupId, string entryId)
    {
        DataCatalogClient client = DataCatalogClient.Create();
        string entryGroupName = EntryGroupName.FromProjectLocationEntryGroup(projectId, location, entryGroupId);
        EntryGroup entryGroup = new EntryGroup()
        {
            DisplayName = "My Entry Group",
            Description = "This is a sample entry group"
        };
        
        Schema schema = new Schema()
        {
            DisplayName = "My Schema",
            Columns =
            {
                new ColumnSchema()
                {
                    Column = new Column()
                    {
                        Type = "STRING",
                        Mode = "NULLABLE",
                        Description = "Column 1"
                    }
                },
                new ColumnSchema()
                {
                    Column = new Column()
                    {
                        Type = "INTEGER",
                        Mode = "REQUIRED",
                        Description = "Column 2"
                    }
                }
            }
        };

        Entry entry = new Entry()
        {
            DisplayName = "My Entry",
            Description = "This is a sample entry",
            Schema = schema
        };

        CreateEntryGroupRequest createEntryGroupRequest = new CreateEntryGroupRequest()
        {
            Parent = entryGroupName,
            EntryGroupId = entryGroupId,
            EntryGroup = entryGroup
        };

        CreateEntryRequest createEntryRequest = new CreateEntryRequest()
        {
            Parent = entryGroupName,
            EntryId = entryId,
            Entry = entry
        };

        client.CreateEntryGroup(createEntryGroupRequest);
        client.CreateEntry(createEntryRequest);
        Console.WriteLine("Created schema and entry.");
    }
}

データガバナンス

Data Catalogは、データリソースに関連するガバナンスポリシーやラベルを設定することができます。これにより、データの所有者、セキュリティルール、利用許可などの情報を容易に追跡・管理することが可能です。

const { DataCatalogClient } = require('@google-cloud/datacatalog').v1beta1;

async function setTags(projectId, location, entryGroupId, entryName) {
    const dataCatalogClient = new DataCatalogClient();

    const entryGroupName = `projects/${projectId}/locations/${location}/entryGroups/${entryGroupId}`;

    const entry = {
        name: `${entryGroupName}/entries/${entryName}`,
        schema: {
            columns: [
                {
                    column: {
                        type: 'INT64',
                        mode: 'NULLABLE',
                        description: 'Column 1',
                    },
                },
                {
                    column: {
                        type: 'STRING',
                        mode: 'NULLABLE',
                        description: 'Column 2',
                    },
                },
            ],
        },
        displayName: 'My Entry',
        description: 'This is a sample entry',
    };

    const tagTemplate = 'projects/-/locations/global/tagTemplates/data_asset';
    const tag = {
        template: tagTemplate,
        fields: {
            'data_owner': { stringValue: 'John Doe' },
            'security_rules': { stringValue: 'Restricted access' },
        },
    };

    const request = {
        parent: entryGroupName,
        entry,
        tag,
    };

    const [entryResponse] = await dataCatalogClient.createEntry(request);
    console.log(`Entry created: ${entryResponse.name}`);
}

まとめ

Data Catalogは、データの探索、検索、モデリング、データガバナンスを可能にするメタデータ管理サービスです。データリソースのメタデータ管理やデータの探索、検索、データモデリング、データガバナンスに関する機能を提供しています。Java、Go、C#、Node.jsのサンプルコードを使用して、Data Catalogの操作方法について説明しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?