准备 BigQuery 数据集和表

如需在实例中创建 AML AI 数据集,您需要在该 Google Cloud 项目的 BigQuery 中暂存数据。以下部分介绍了一种准备这些数据集和表的方法。

创建 BigQuery 输出数据集

运行以下命令创建数据集,以用于将流水线输出发送到 BigQuery。在以下命令中,为 BQ_OUTPUT_DATASET_NAME 选择一个仅包含字母(大写或小写)、数字和下划线的名称。不能使用连字符

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

如需查看 AML AI 输出,请参阅 AML 输出数据模型

创建 BigQuery 输入数据集

创建 BigQuery 输入数据集。稍后,您需要将金融机构的交易数据输入此数据集。

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

创建 BigQuery 输入数据集表并上传交易数据

我们按以下格式提供 AML 输入数据模型架构:

如需下载每个表的 JSON 文件,并使用该文件通过应用架构来创建关联的 BigQuery 表,请运行以下命令。

for table in 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 输入和输出数据集。

  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"
    
    # 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
    
  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