Preparar conjuntos de dados e tabelas do BigQuery

Para criar conjuntos de dados da IA antilavagem de dinheiro em uma instância, é preciso preparar os dados no BigQuery dentro desse projeto do Google Cloud. Nas seções a seguir, mostramos uma maneira de preparar esses conjuntos de dados e tabelas.

Criar um conjunto de dados de saída do BigQuery

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

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

Para conferir as saídas da IA antilavagem de dinheiro, consulte Modelo de dados de saída da AML.

Criar o conjunto de dados de entrada do BigQuery

Criar um conjunto de dados de entrada do BigQuery Mais adiante, você inserirá os dados de transação da sua instituição financeira neste conjunto de dados.

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

Criar as tabelas do conjunto de dados de entrada do BigQuery e fazer upload dos dados da transação

Fornecemos o esquema do modelo de dados de entrada da antilavagem de dinheiro nos seguintes formatos:

Para fazer o download do arquivo JSON de cada tabela e usá-lo para criar a tabela do BigQuery associada aplicando o esquema, execute o comando a seguir.

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

Faça upload dos dados de transação da sua instituição financeira para as tabelas do conjunto de dados. Para mais informações, consulte qualquer 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. Essa conta precisa ter acesso aos conjuntos de dados de entrada e saída do BigQuery.

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

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