Preparar conjuntos de datos y tablas de BigQuery

Para crear conjuntos de datos de IA contra el lavado de dinero en una instancia, debes almacenar los datos en etapa intermedia en BigQuery dentro de ese proyecto de Google Cloud. En las siguientes secciones, se muestra una forma de preparar estos conjuntos de datos y tablas.

Crea un conjunto de datos de salida de BigQuery

Ejecuta el siguiente comando para crear un conjunto de datos que se usará para enviar los resultados de la canalización a BigQuery. En el siguiente comando, selecciona un nombre para BQ_OUTPUT_DATASET_NAME que contenga solo letras (mayúsculas o minúsculas), números y guiones bajos. No puedes usar guiones.

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

Para ver los resultados de la IA contra el lavado de dinero, consulta Modelo de datos de salidas del lavado de dinero.

Crea el conjunto de datos de entrada de BigQuery

Crear un conjunto de datos de entrada de BigQuery Más adelante, ingresarás los datos de transacciones de tu institución financiera en este conjunto de datos.

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

Crea las tablas del conjunto de datos de entrada de BigQuery y sube los datos de transacción

Proporcionamos el esquema del modelo de datos de entrada contra el lavado de dinero en los siguientes formatos:

Ejecuta el siguiente comando para descargar el archivo JSON de cada tabla y usarlo para crear la tabla de BigQuery asociada mediante la aplicación del esquema.

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

Sube los datos de las transacciones de tu institución financiera a las tablas de los conjuntos de datos. Para obtener más información, consulta cualquiera de las guías de inicio rápido de BigQuery.

Otorga acceso a los conjuntos de datos de BigQuery

La API crea automáticamente una cuenta de servicio en tu proyecto. La cuenta de servicio necesita acceso a los conjuntos de datos de entrada y salida de BigQuery.

Para PROJECT_NUMBER, usa el número de proyecto asociado con PROJECT_ID. Puedes encontrar el número de proyecto en la página Configuración de IAM.

  1. Instala jq en tu máquina de desarrollo. Si no puedes instalar jq en tu máquina de desarrollo, puedes usar Cloud Shell o uno de los otros métodos para otorgar acceso a un recurso que se encuentra en la documentación de BigQuery.
  2. Ejecuta los siguientes comandos para otorgar acceso de lectura al conjunto de datos de entrada y sus tablas.

    # 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. Ejecuta los siguientes comandos para otorgar acceso de escritura al conjunto de datos de salida.

    # 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