Préparer les ensembles de données et les tables BigQuery

Pour créer des ensembles de données d'IA de lutte contre le blanchiment d'argent dans une instance, vous devez mettre en scène des données dans BigQuery dans ce projet Google Cloud. Les sections suivantes montrent une façon de préparer ces ensembles de données et ces tables.

Créer un ensemble de données de sortie BigQuery

Exécutez la commande suivante pour créer un ensemble de données à utiliser pour envoyer les sorties du pipeline vers BigQuery. Dans la commande suivante, sélectionnez un nom pour BQ_OUTPUT_DATASET_NAME qui ne contient que des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement. Vous ne pouvez pas utiliser de traits d'union.

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

Pour afficher les sorties de l'IA AML, consultez la section Modèle de données de sortie AML.

Créer l'ensemble de données d'entrée BigQuery

Créez un ensemble de données d'entrée BigQuery. Vous allez ensuite saisir les données de transaction de votre institution financière dans cet ensemble de données.

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

Créer les tables de l'ensemble de données d'entrée BigQuery et importer les données de transaction

Nous fournissons le schéma du modèle de données d'entrée AML dans les formats suivants:

Nous fournissons la table d'enregistrement des partis au format JSON. Vous utiliserez ce tableau plus tard lorsque vous enregistrerez des parties afin de créer des résultats de prédiction.

Pour télécharger le fichier JSON de chaque table et l'utiliser pour créer la table BigQuery associée en appliquant le schéma, exécutez la commande suivante.

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

Importez les données de transaction de votre institution financière dans les tables de l'ensemble de données. Pour en savoir plus, consultez l'un des guides de démarrage rapide de BigQuery.

Accorder l'accès aux ensembles de données BigQuery

L'API crée automatiquement un compte de service dans votre projet. Le compte de service doit avoir accès aux ensembles de données d'entrée et de sortie BigQuery.

Pour PROJECT_NUMBER, utilisez le numéro de projet associé à PROJECT_ID. Vous pouvez trouver le numéro de projet sur la page Paramètres IAM.

  1. Installez jq sur votre ordinateur de développement. Si vous ne pouvez pas installer jq sur votre ordinateur de développement, vous pouvez utiliser Cloud Shell ou l'une des autres méthodes d'octroi d'accès à une ressource décrites dans la documentation BigQuery.
  2. Exécutez les commandes suivantes pour accorder un accès en lecture à l'ensemble de données d'entrée et à ses tables.

    # 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. Exécutez les commandes suivantes pour accorder un accès en écriture à l'ensemble de données de sortie.

    # 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