BigQuery のデータセットとテーブルを準備する

インスタンスに AML AI データセットを作成するには、その Google Cloud プロジェクト内の BigQuery でデータをステージングする必要があります。以下のセクションでは、これらのデータセットとテーブルを準備する 1 つの方法を説明します。

BigQuery 出力データセットを作成する

次のコマンドを実行して、パイプライン出力を BigQuery に送信するために使用するデータセットを作成します。次のコマンドでは、文字(大文字または小文字)、数字、アンダースコアのみを含む BQ_OUTPUT_DATASET_NAME の名前を選択します。ハイフンは使用できません

bq mk \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  BQ_OUTPUT_DATASET_NAME

AML AI 出力を確認するには、AML 出力データモデルをご覧ください。

BigQuery 入力データセットを作成し、トランザクション データをアップロードする

AML 入力データモデルを使用して金融機関のトランザクション データを整理したら、BigQuery 入力データセットを作成します。

bq mk \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  BQ_INPUT_DATASET_NAME

トランザクション データをデータセットにアップロードします。詳細については、BigQuery クイックスタートをご覧ください。

(省略可)BigQuery データセットに対するプロジェクト レベルのアクセス権を付与する

API は、プロジェクトにサービス アカウントを自動的に作成します。サービス アカウントは、BigQuery 入力データセットと BigQuery 出力データセットにアクセスする必要があります。アクセス権を付与するには、次の 2 つの方法があります。

  1. プロジェクト内のすべての BigQuery データセットへのアクセス権を付与する(2 つのコマンドを実行することのみが必要)
  2. 特定の BigQuery データセット内の特定のテーブルへのアクセスを制限する(データセットごとに複数のコマンドを実行する必要がある)

プロジェクト内のすべてのデータセットへのアクセス権を付与するには、次の 2 つのコマンドを実行します。アクセスをさらに制限するには、BigQuery 入力データセットへのアクセス権を付与するセクションをご覧ください。

すべての入力データセットへの読み取りアクセス権を付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" \
  --role=roles/bigquery.dataViewer

すべての出力データセットへの書き込みアクセス権を付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" \
  --role=roles/bigquery.dataEditor

詳細については、BigQuery の IAM ページをご覧ください。

BigQuery の入力データセットへのアクセス権を付与する

サービス アカウントに BigQuery 入力データセットへの読み取りアクセス権を付与します。置換変数を変更した後、次のコマンドを実行します。

# The BigQuery input dataset name. You created this dataset and
# uploaded the financial data into it in a previous step. This dataset should be
# stored in the Google Cloud project.

export BQ_INPUT_DATASET_NAME="BQ_INPUT_DATASET_NAME"

# The BigQuery tables in the input dataset. These tables should
# be part of the same project as the intended instance.
# Make sure to replace each table variable with the appropriate table name.
export PARTY_TABLE="PARTY_TABLE"
export ACCOUNT_PARTY_LINK_TABLE="ACCOUNT_PARTY_LINK_TABLE"
export TRANSACTION_TABLE="TRANSACTION_TABLE"
export RISK_CASE_EVENT_TABLE="RISK_CASE_EVENT_TABLE"
# Optional table
export PARTY_SUPPLEMENTARY_DATA_TABLE="PARTY_SUPPLEMENTARY_DATA_TABLE"

# Grant the API read access to the BigQuery dataset.
# Update the current access permissions on the BigQuery dataset and store in a temp file.
# Note: This step requires jq as a dependency.
# If jq is not available, the file /tmp/mydataset.json may be created manually.
bq show --format=prettyjson "PROJECT_ID:BQ_INPUT_DATASET_NAME" | jq '.access+=[{"role":"READER","userByEmail":"service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" }]'> /tmp/mydataset.json
# Update the BigQuery dataset access permissions using the temp file.
bq update --source /tmp/mydataset.json "PROJECT_ID:BQ_INPUT_DATASET_NAME"

# Grant the API read access to the BigQuery table if the table is provided.
for TABLE in $PARTY_TABLE $TRANSACTION_TABLE $ACCOUNT_PARTY_LINK_TABLE $RISK_CASE_EVENT_TABLE $PARTY_SUPPLEMENTARY_DATA_TABLE ; do
   [ -n TABLE ] && bq add-iam-policy-binding \
     --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" --role="roles/bigquery.dataViewer" \
     PROJECT_ID:BQ_INPUT_DATASET_NAME.${TABLE}
done

詳細については、BigQuery の IAM ページをご覧ください。

BigQuery 出力データセットへのアクセス権を付与する

サービス アカウントに BigQuery 出力データセットに対する読み取りアクセス権を付与します。置換変数を変更した後、次のコマンドを実行します。

# Note: This step requires jq as a dependency.
# If jq isn't available, the file /tmp/mydataset.json may be created manually.
bq show --format=prettyjson PROJECT_ID:BQ_OUTPUT_DATASET_NAME | jq '.access+=[{"role":"roles/bigquery.dataEditor","userByEmail":"service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" }]'> /tmp/perms.json

bq update --source /tmp/perms.json PROJECT_ID:BQ_OUTPUT_DATASET_NAME