Google スプレッドシートからエントリのリンクをインポートする

エントリリンク インポート ユーティリティを使用すると、Google スプレッドシートから Knowledge Catalog(旧称 Dataplex Universal Catalog)にエントリリンクを一括インポートできます。スプレッドシートを使用すると、用語集の用語とデータアセットの関係を大規模に定義して更新できます。

始める前に

エントリリンクを Knowledge Catalog にインポートする前に、次の前提条件を満たしてください。

サービス アカウントを設定する

Google スプレッドシートを使用してインポート ユーティリティを実行するには、Google Sheets API にアクセスしてユーザー認証情報を借用するために必要な権限を持つサービス アカウントを設定する必要があります。

  1. サービス アカウントを特定または作成します。

    インポート ユーティリティを実行するプロジェクトで、既存のサービス アカウントを選択するか、新しいサービス アカウントを作成します。詳細については、サービス アカウントの作成をご覧ください。サービス アカウントのメールアドレス(例: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com)をメモします。

  2. サービス アカウントの権限借用を構成する。

    インポート ユーティリティ スクリプトをローカルで実行するには、ユーザー アカウントにサービス アカウントの権限を借用する権限が必要です。ユーザー アカウントに、サービス アカウントのサービス アカウント トークン作成者ロール(roles/iam.serviceAccountTokenCreator)を付与します。

    詳細については、サービス アカウントに対するアクセス権の管理をご覧ください。

  3. サービス アカウント Editor に Google スプレッドシートへのアクセス権を付与します。

    インポート プロセスに使用する Google スプレッドシートを開き、[共有] をクリックして、サービス アカウントのメールを Editor として追加します。この権限により、サービス アカウントはシートからデータを読み取ったり、シートにデータを書き込んだりできます。

Cloud Storage バケットを作成する

インポート ファイルのステージング領域として機能する Cloud Storage バケットを作成します。

必要なロール

Google スプレッドシートからエントリリンクをインポートするために必要な権限がサービス アカウントに付与されるように、次の IAM ロールをサービス アカウントに付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をサービス アカウントに付与することもできます。

API を有効にする

エントリリンクをインポートするには、プロジェクトで次の API を有効にします。

API を有効にするために必要なロール

API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を学習する。

API を有効にする

Git リポジトリを設定する

dataplex-labs リポジトリのクローンを作成します。

git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git
cd dataplex-labs/dataplex-quickstart-labs/00-resources/scripts/python/business-glossary-import/dataplex-glossary/import

依存関係のインストール

必要な Python 依存関係をインストールします。

pip3 install -r requirements.txt
cd dataplex-glossary

パッケージのインストールで問題が発生した場合は、新しい Python 開発環境を設定します。

サービス アカウントの権限借用を認証して構成する

Google Cloud CLI を初期化し、サービス アカウントの権限借用でアプリケーションのデフォルト認証情報(ADC)を使用して認証します。

# Set your service account email address
SA_EMAIL="SERVICE_ACCOUNT_EMAIL"

# Authenticate ADC using service account impersonation and required scopes
gcloud init
gcloud auth login
gcloud auth application-default login \
  --impersonate-service-account="${SA_EMAIL}" \
  --scopes="https://www.googleapis.com/auth/spreadsheets"

SERVICE_ACCOUNT_EMAIL は、サービス アカウントのメール ID に置き換えます。次に例を示します。

SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

プロジェクト間のインポートの要件

複数の Google Cloud プロジェクトにエントリリンクをインポートするには、インポート ユーティリティを実行する前に、構成が次の要件を満たしていることを確認してください。

  • クロス プロジェクト IAM 権限を構成する: インポート スクリプトを実行するサービス アカウントには、すべてのターゲット プロジェクトで十分な権限が必要です。

  • エントリの存在を確認する: インポートを実行する前に、ターゲット エントリがそれぞれの Knowledge Catalog プロジェクトにすでに存在している必要があります。

  • Knowledge Catalog サービス エージェントに Cloud Storage バケットへのアクセス権を付与する: 各ターゲット プロジェクトの Knowledge Catalog サービス アカウントには、Cloud Storage バケットへのアクセス権が必要です。

インポート用の Google スプレッドシートを作成して構造化する

一括インポートを正常に実行するには、正確な列スキーマを使用して新しい Google スプレッドシートを作成し、definition、related、synonym のエントリリンク タイプを含むエントリリンクを定義する必要があります。このスキーマを使用すると、インポート ユーティリティでメタデータ フィールドを解析して検証できます。サービス アカウント Editor に Google スプレッドシートへのアクセス権を付与していることを確認します。

シートの最初の行には、大文字と小文字を区別する次のスキーマ ヘッダーを正確に含める必要があります。

列見出し 必須または省略可 説明
entry_link_type 必須 値は definition、related、synonym のいずれかにする必要があります。
source_entry 必須 ソースエントリの完全なリソースパス(
形式)。 projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRYGROUP_NAME/entries/ENTRY_NAME
target_entry 必須 ターゲット エントリの完全なリソースパス(形式:
) projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRYGROUP_NAME/entries/ENTRY_NAME
source_path 省略可 定義リンクの列またはフィールドパス(例: Schema.column_name)。

環境変数を設定する

次の環境変数を設定します。

# Set your Google Sheet URL
export SPREADSHEET_URL="GOOGLE_SHEET_URL"

# Set your bucket name
export BUCKETS="COMMA_SEPARATED_LIST_OF_BUCKETS"

# Set the project ID
export USER_PROJECT="USER_PROJECT"

Google スプレッドシートからエントリリンクをインポートする

Google スプレッドシートから Knowledge Catalog にエントリリンクをインポートするには、entrylinks-import.py スクリプトを実行します。

cd import
python3 entrylinks-import.py \
  --spreadsheet-url="$SPREADSHEET_URL" \
  --buckets="$BUCKETS" \
  --user-project="$USER_PROJECT"

複数のインポート ジョブを並列で実行するには、--buckets パラメータに複数の Cloud Storage バケットを指定します。このスクリプトは、メタデータを小さなバッチに分割し、バケット間で同時に処理することで、取り込みの合計時間を短縮します。

実行ログは、ローカル実行パスの logs/ ディレクトリで確認できます。これらのログは、転送プロセスの監査や、スキップされたエントリやフォーマット警告の特定に役立ちます。

次のステップ