準備 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 interaction_event
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