Preparar conjuntos de dados e tabelas do BigQuery

Para criar conjuntos de dados de IA antilavagem de dinheiro em uma instância, é preciso organizar os dados no BigQuery nesse projeto do Google Cloud. As seções a seguir mostram uma maneira de preparar esses conjuntos de dados e tabelas.

Criar um conjunto de dados de saída do BigQuery

Execute o comando abaixo para criar um conjunto de dados que será usado para enviar as saídas do pipeline ao BigQuery. Nos seguintes , selecione um nome para BQ_OUTPUT_DATASET_NAME que contenha apenas letras (maiúsculas e minúsculas), números e sublinhados. Não é possível usar hifens.

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

Para conferir as saídas da IA antilavagem de dinheiro, consulte o modelo de dados de saída da antilavagem de dinheiro.

Criar o conjunto de dados de entrada do BigQuery

Criar um conjunto de dados de entrada do BigQuery Mais tarde, você vai inserir os dados de transação da sua instituição financeira nesse conjunto de dados.

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

Crie as tabelas do conjunto de dados de entrada do BigQuery e faça upload dos dados da transação.

Fornecemos o esquema do modelo de dados de entrada AML nos seguintes formatos:

Fornecemos a tabela de registro de partes no formato JSON. Você usará essa tabela mais tarde ao registrar partes para criar resultados de previsão.

Para fazer o download do arquivo JSON para cada tabela e usá-lo para criar a associação Tabela do BigQuery aplicando o esquema, execute o seguinte kubectl.

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

Faça upload dos dados de transações da sua instituição financeira para as tabelas do conjunto de dados. Para mais informações, consulte um dos Guias de início rápido do BigQuery.

Conceder acesso aos conjuntos de dados do BigQuery

A API cria automaticamente uma conta de serviço no projeto. A conta de serviço precisa ter acesso aos conjuntos de dados de entrada e saída do BigQuery.

Para PROJECT_NUMBER, use o número do projeto associado a PROJECT_ID. Encontre o número do projeto na página Configurações do IAM.

  1. Instale o jq no seu máquina de desenvolvimento de software. Se não for possível instalar o jq na sua máquina de desenvolvimento, é possível usar o Cloud Shell ou um dos outros métodos para concedendo acesso a um recurso na documentação do BigQuery.
  2. Execute os comandos abaixo para conceder acesso de leitura ao conjunto de dados de entrada e às tabelas.

    # 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. Execute os comandos a seguir para conceder acesso de gravação ao conjunto de dados de saída.

    # 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