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の操作方法について説明しました。