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

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

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

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

bash

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

powershell

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

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

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

BigQuery 入力データセットを作成します。後で、金融機関の取引データをこのデータセットに入力します。

gcloud

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

Powershell

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

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

AML 入力データモデル スキーマは、次の形式で提供されます。

当事者登録テーブルは JSON 形式で提供されます。このテーブルは、後で予測結果を作成するために当事者を登録するときに使用します。

各テーブルの JSON ファイルをダウンロードし、使用し、スキーマを適用して関連する BigQuery テーブルを作成するには、次のコマンドを実行します。

for table in party_registration party account_party_link transaction risk_case_event party_supplementary_data
do
  curl -O "https://cloud.google.com/financial-services/anti-money-laundering/docs/reference/schemas/${table}.json"
  bq mk --table --project_id PROJECT_ID BQ_INPUT_DATASET_NAME.$table $table.json
done

金融機関の取引データをデータセット テーブルにアップロードします。詳細については、BigQuery クイックスタートをご覧ください。

BigQuery データセットへのアクセス権の付与

API により、プロジェクトにサービス アカウントが自動的に作成されます。サービス アカウントには、BigQuery の入力データセットと出力データセットへのアクセス権が必要です。

PROJECT_NUMBER には、PROJECT_ID に関連付けられたプロジェクト番号を使用します。プロジェクト番号は IAM 設定ページで確認できます。

  1. 開発マシンに jq をインストールします。開発マシンに jq をインストールできない場合は、Cloud Shell か、BigQuery ドキュメントにあるリソースへのアクセス権を付与するのいずれかの方法を使用することができます。
  2. 次のコマンドを実行して、入力データセットとそのテーブルに対する読み取りアクセス権を付与します。

    # 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"
    # Registered parties table
    export PARTY_REGISTRATION_TABLE="PARTY_REGISTRATION_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 $PARTY_REGISTRATION_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
    
  3. 次のコマンドを実行して、出力データセットに対する書き込みアクセス権を付与します。

    # 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