Forme e teste modelos concebidos para detetar branqueamento de capitais

Este guia de início rápido explica uma implementação integral de um modelo para detetar branqueamento de capitais através da API Anti Money Laundering AI (AML AI). Neste guia, vai aprender a formar e testar modelos para detetar branqueamento de capitais através dos seguintes passos:

  1. Prepare o seu ambiente do Google Cloud e crie uma instância de IA de AML.
  2. Fornecer dados de transações sintéticas sob a forma de tabelas do BigQuery.
  3. Prepare e teste retroativamente um modelo com dados de entrada.
  4. Registar partes e fazer previsões de modelos.

Depois de criar resultados de previsão, este guia analisa um único caso de uma parte de exemplo que está a branquear dinheiro através da estruturação de fundos.

Antes de começar

Esta secção descreve como configurar uma Google Cloud conta, ativar os serviços Google Cloud necessários e conceder as autorizações necessárias para executar o início rápido.

Se for usar um projeto existente que não é seu, pode ter de pedir ao administrador que lhe conceda determinadas autorizações para aceder ao projeto existente. Para mais informações, consulte o artigo Criar e gerir projetos.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the required APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable financialservices.googleapis.com bigquery.googleapis.com cloudkms.googleapis.com bigquerydatatransfer.googleapis.com
  8. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  9. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/financialservices.admin, roles/cloudkms.admin, roles/bigquery.admin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  10. Install the Google Cloud CLI.

  11. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  12. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  13. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the required APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable financialservices.googleapis.com bigquery.googleapis.com cloudkms.googleapis.com bigquerydatatransfer.googleapis.com
  16. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  17. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/financialservices.admin, roles/cloudkms.admin, roles/bigquery.admin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  18. Estas funções cumprem as seguintes autorizações obrigatórias:

    Autorizações necessárias

    São necessárias as seguintes autorizações para concluir este início rápido:

    Autorização Descrição
    resourcemanager.projects.getObtenha um Google Cloud projeto
    resourcemanager.projects.listList Google Cloud projects
    cloudkms.keyRings.createCrie um conjunto de chaves do Cloud KMS
    cloudkms.cryptoKeys.createCrie uma chave do Cloud KMS
    financialservices.v1instances.createCrie uma instância de IA de AML
    financialservices.operations.getObtenha uma operação de IA de AML
    cloudkms.cryptoKeys.getIamPolicyObtenha a política IAM numa chave do Cloud KMS
    cloudkms.cryptoKeys.setIamPolicyDefina a Política IAM numa chave do Cloud KMS
    bigquery.datasets.createCrie um conjunto de dados do BigQuery
    bigquery.datasets.getObtenha um conjunto de dados do BigQuery
    bigquery.transfers.getReceba uma transferência do Serviço de transferência de dados do BigQuery
    bigquery.transfers.updateCrie ou elimine uma transferência do Serviço de transferência de dados do BigQuery
    bigquery.datasets.setIamPolicyDefina a política IAM num conjunto de dados do BigQuery
    bigquery.datasets.updateAtualize um conjunto de dados do BigQuery
    financialservices.v1datasets.createCrie um conjunto de dados de IA para AML
    financialservices.v1engineconfigs.createCrie uma configuração do motor de IA de AML
    financialservices.v1models.createCrie um modelo de IA de combate ao branqueamento de capitais
    financialservices.v1backtests.createCrie um resultado de teste retroativo de IA de AML
    financialservices.v1backtests.exportMetadataExporte metadados de um resultado de teste retroativo de IA de AML
    financialservices.v1instances.importRegisteredPartiesImporte partes registadas para uma instância de IA de AML
    financialservices.v1predictions.createCrie um resultado de previsão de IA de AML
    bigquery.jobs.createCrie uma tarefa do BigQuery
    bigquery.tables.getDataObtenha dados de uma tabela do BigQuery
    financialservices.v1predictions.deleteElimine um resultado de previsão de IA de AML
    financialservices.v1backtests.deleteElimine um resultado do teste retrospetivo de IA de AML
    financialservices.v1models.deleteElimine um modelo de IA de AML
    financialservices.v1engineconfigs.deleteElimine uma configuração do motor de IA de AML
    financialservices.v1datasets.deleteElimine um conjunto de dados de IA de AML
    financialservices.v1instances.deleteElimine uma instância de IA de AML
    bigquery.datasets.deleteElimine um conjunto de dados do BigQuery

  19. Os pedidos API neste guia usam o mesmo Google Cloud projeto e localização e IDs de recursos codificados para facilitar a conclusão do guia. Os IDs dos recursos seguem o padrão my-resource-type (por exemplo, my-key-ring e my-model).

    Certifique-se de que as seguintes substituições estão definidas para este guia:

    • PROJECT_ID: o seu Google Cloud ID do projeto indicado nas definições de IAM
    • PROJECT_NUMBER: o número do projeto associado a PROJECT_ID. Pode encontrar o número do projeto na página Definições do IAM.
    • LOCATION: a localização dos recursos da API; use uma das regiões suportadas
      Mostrar localizações
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1
  20. Crie uma instância

    Esta secção descreve como criar uma instância. A instância de IA de AML está na raiz de todos os outros recursos de IA de AML. Cada instância requer uma única chave de encriptação gerida pelo cliente (CMEK) associada, que é usada para encriptar todos os dados criados pela IA de AML.

    Crie um conjunto de chaves

    Para criar um conjunto de chaves, use o método projects.locations.keyRings.create.

    REST

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d "" \
    "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=my-key-ring"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -Uri "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=my-key-ring" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring",
      "createTime": CREATE_TIME
    }
    

    gcloud

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud kms keyrings create my-key-ring \
      --location LOCATION

    Windows (PowerShell)

    gcloud kms keyrings create my-key-ring `
      --location LOCATION

    Windows (cmd.exe)

    gcloud kms keyrings create my-key-ring ^
      --location LOCATION
    Deve receber uma resposta vazia:
    $

    Crie uma chave

    Para criar uma chave, use o método projects.locations.keyRings.cryptoKeys.

    REST

    Corpo JSON do pedido:

    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-key"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
      "purpose": "ENCRYPT_DECRYPT"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-key" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key",
      "primary": {
        "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key/cryptoKeyVersions/1",
        "state": "ENABLED",
        "createTime": CREATE_TIME,
        "protectionLevel": "SOFTWARE",
        "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
        "generateTime": GENERATE_TIME
      },
      "purpose": "ENCRYPT_DECRYPT",
      "createTime": CREATE_TIME,
      "versionTemplate": {
        "protectionLevel": "SOFTWARE",
        "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
      },
      "destroyScheduledDuration": "86400s"
    }
    

    gcloud

    Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • LOCATION: a localização do conjunto de chaves; use uma das regiões suportadas
      Mostrar localizações
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud kms keys create my-key \
      --keyring my-key-ring \
      --location LOCATION \
      --purpose "encryption"

    Windows (PowerShell)

    gcloud kms keys create my-key `
      --keyring my-key-ring `
      --location LOCATION `
      --purpose "encryption"

    Windows (cmd.exe)

    gcloud kms keys create my-key ^
      --keyring my-key-ring ^
      --location LOCATION ^
      --purpose "encryption"
    Deve receber uma resposta vazia:
    $

    Crie a instância através da API

    Para criar uma instância, use o método projects.locations.instances.create.

    Corpo JSON do pedido:

    {
      "kmsKey": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key"
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
      "kmsKey": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key"
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=my-instance"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
      "kmsKey": "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=my-instance" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Se for bem-sucedido, o corpo da resposta contém uma operação de execução longa que contém um ID que pode ser usado para obter o estado em curso da operação assíncrona. Copie o OPERATION_ID devolvido para usar na secção seguinte.

    Verifique o resultado

    Use o método projects.locations.operations.get para verificar se a instância foi criada. Se a resposta contiver "done": false, repita o comando até que a resposta contenha "done": true.

    As operações neste guia podem demorar alguns minutos a várias horas a serem concluídas. Tem de aguardar até que uma operação seja concluída antes de avançar neste guia, porque a API usa o resultado de alguns métodos como entrada para outros métodos.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • OPERATION_ID: o identificador da operação

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "endTime": END_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.Instance",
        "name": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "createTime": CREATE_TIME,
        "updateTime": UPDATE_TIME,
        "kmsKey": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key",
        "state": "ACTIVE"
      }
    }
    

    Conceda acesso à chave CMEK

    A API cria automaticamente uma conta de serviço no seu projeto. A conta de serviço precisa de acesso à chave CMEK para poder usá-la para encriptar e desencriptar os dados subjacentes. Conceda acesso à chave.

    gcloud kms keys add-iam-policy-binding "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring/cryptoKeys/my-key" \
      --keyring "projects/PROJECT_ID/locations/LOCATION/keyRings/my-key-ring" \
      --location "LOCATION" \
      --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" \
      --role="roles/cloudkms.cryptoKeyEncrypterDecrypter" \
      --project="PROJECT_ID"

    Crie conjuntos de dados do BigQuery

    Esta secção descreve como criar conjuntos de dados do BigQuery de entrada e saída e, em seguida, copiar dados bancários de exemplo para o conjunto de dados de entrada.

    Crie um conjunto de dados de saída

    Crie um conjunto de dados a usar para enviar os resultados do pipeline de AML.

    Bash

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

    PowerShell

    bq mk `
      --location=LOCATION `
      --project_id=PROJECT_ID `
      my_bq_output_dataset
    

    Crie um conjunto de dados de entrada

    Crie um conjunto de dados para copiar as tabelas bancárias de amostra.

    Bash

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

    PowerShell

    bq mk `
      --location=LOCATION `
      --project_id=PROJECT_ID `
      my_bq_input_dataset
    

    Copie o conjunto de dados de exemplo

    Os dados bancários de exemplo são fornecidos como um conjunto de dados do BigQuery no projeto de conjunto de dados partilhado da Google. Tem de ter acesso à API de IA de AML para que este conjunto de dados seja acessível. As principais características deste conjunto de dados incluem o seguinte:

    • 100 000 festas
    • Um intervalo de tempo principal de 1 de janeiro de 2020 a 1 de janeiro de 2023 e 24 meses adicionais de dados de análise retrospetiva
    • 300 casos de risco negativos e 20 positivos por mês
    • Casos de risco com os seguintes atributos:
      • Metade dos casos de risco positivos são relativos à atividade de estruturação que ocorreu nos dois meses anteriores ao evento AML_PROCESS_START
      • A outra metade abrange os partidos com o valor mais elevado de dinheiro recebido nos dois meses anteriores ao evento de AML_PROCESS_START
      • Os registos negativos são gerados aleatoriamente
      • Uma probabilidade de 0, 1% de o caso de risco ser gerado no estado oposto (por exemplo, uma parte aleatória que seja positiva ou uma parte que tenha atividade de estruturação ou o rendimento mais elevado e seja comunicada como negativa)
    • O esquema AML é definido no modelo de dados de entrada AML.
    1. Copie os dados bancários de amostra para o conjunto de dados de entrada que criou.

      Bash

      bq mk --transfer_config \
        --project_id=PROJECT_ID \
        --data_source=cross_region_copy \
        --target_dataset="my_bq_input_dataset" \
        --display_name="Copy the AML sample dataset." \
        --schedule=None \
        --params='{
          "source_project_id":"bigquery-public-data",
          "source_dataset_id":"aml_ai_input_dataset",
          "overwrite_destination_table":"true"
        }'
      

      PowerShell

      bq mk --transfer_config `
      --project_id=PROJECT_ID `
      --data_source=cross_region_copy `
      --target_dataset="my_bq_input_dataset" `
      --display_name="Copy the AML sample dataset." `
      --schedule=None `
      --params='{\"source_project_id\":\"bigquery-public-data\",\"source_dataset_id\":\"aml_ai_input_dataset\",\"overwrite_destination_table\":\"true\"}'
      
    2. Monitorize a tarefa de transferência de dados.

      Bash

      bq ls --transfer_config \
      --transfer_location=LOCATION \
      --project_id=PROJECT_ID \
      --filter="dataSourceIds:cross_region_copy"
      

      PowerShell

      bq ls --transfer_config `
      --transfer_location=LOCATION `
      --project_id=PROJECT_ID `
      --filter="dataSourceIds:cross_region_copy"
      

      Após a conclusão da transferência, é criado um trabalho de transferência de dados com o nome a apresentar Copy the AML sample dataset.

      Também pode verificar o estado da transferência através da Google Cloud consola.

      Deverá ver algo semelhante ao seguinte resultado.

                           name                           displayName         dataSourceId       state
      -------------------------------------------  -----------------------  -----------------  ---------
      projects/294024168771/locations/us-central1  Copy AML sample dataset  cross_region_copy  SUCCEEDED
      

    Conceda acesso aos conjuntos de dados do BigQuery

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

    1. Conceda acesso de leitura ao conjunto de dados de entrada e às respetivas tabelas.

      Bash

      bq query --project_id=PROJECT_ID --use_legacy_sql=false \
        'GRANT `roles/bigquery.dataViewer` ON SCHEMA `PROJECT_ID.my_bq_input_dataset` TO "serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com"'
      

      PowerShell

      bq query --project_id=PROJECT_ID --use_legacy_sql=false "GRANT ``roles/bigquery.dataViewer`` ON SCHEMA ``PROJECT_ID.my_bq_input_dataset`` TO 'serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com'"
      
    2. Conceda acesso de escrita ao conjunto de dados de saída.

      Bash

      bq query --project_id=PROJECT_ID --use_legacy_sql=false \
        'GRANT `roles/bigquery.dataEditor` ON SCHEMA `PROJECT_ID.my_bq_output_dataset` TO "serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com"'
      

      PowerShell

      bq query --project_id=PROJECT_ID --use_legacy_sql=false "GRANT ``roles/bigquery.dataEditor`` ON SCHEMA ``PROJECT_ID.my_bq_output_dataset`` TO 'serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com'"
      

    Crie um conjunto de dados de IA para AML

    Crie um conjunto de dados de IA de AML para especificar as tabelas do conjunto de dados do BigQuery de entrada e o intervalo de tempo a usar.

    Para criar um conjunto de dados, use o método projects.locations.instances.datasets.create.

    Corpo JSON do pedido:

    {
      "tableSpecs": {
        "party": "bq://PROJECT_ID.my_bq_input_dataset.party",
        "account_party_link": "bq://PROJECT_ID.my_bq_input_dataset.account_party_link",
        "transaction": "bq://PROJECT_ID.my_bq_input_dataset.transaction",
        "risk_case_event": "bq://PROJECT_ID.my_bq_input_dataset.risk_case_event",
        "party_supplementary_data": "bq://PROJECT_ID.my_bq_input_dataset.party_supplementary_data"
      },
      "dateRange": {
        "startTime": "2020-01-01T00:00:0.00Z",
        "endTime": "2023-01-01T00:00:0.00Z"
      },
      "timeZone": {
        "id": "UTC"
      }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
      "tableSpecs": {
        "party": "bq://PROJECT_ID.my_bq_input_dataset.party",
        "account_party_link": "bq://PROJECT_ID.my_bq_input_dataset.account_party_link",
        "transaction": "bq://PROJECT_ID.my_bq_input_dataset.transaction",
        "risk_case_event": "bq://PROJECT_ID.my_bq_input_dataset.risk_case_event",
        "party_supplementary_data": "bq://PROJECT_ID.my_bq_input_dataset.party_supplementary_data"
      },
      "dateRange": {
        "startTime": "2020-01-01T00:00:0.00Z",
        "endTime": "2023-01-01T00:00:0.00Z"
      },
      "timeZone": {
        "id": "UTC"
      }
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets?dataset_id=my-dataset"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
      "tableSpecs": {
        "party": "bq://PROJECT_ID.my_bq_input_dataset.party",
        "account_party_link": "bq://PROJECT_ID.my_bq_input_dataset.account_party_link",
        "transaction": "bq://PROJECT_ID.my_bq_input_dataset.transaction",
        "risk_case_event": "bq://PROJECT_ID.my_bq_input_dataset.risk_case_event",
        "party_supplementary_data": "bq://PROJECT_ID.my_bq_input_dataset.party_supplementary_data"
      },
      "dateRange": {
        "startTime": "2020-01-01T00:00:0.00Z",
        "endTime": "2023-01-01T00:00:0.00Z"
      },
      "timeZone": {
        "id": "UTC"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets?dataset_id=my-dataset" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Pode verificar o resultado da operação através do novo ID da operação. (Pode fazê-lo para os restantes pedidos de API usados neste guia.)

    Crie uma configuração do motor

    Crie uma configuração do motor de IA de AML para otimizar automaticamente os hiperparâmetros com base numa determinada versão do motor e nos dados fornecidos. As versões do motor são lançadas periodicamente e correspondem a uma lógica de modelo diferente (por exemplo, segmentar uma linha de negócio de retalho em comparação com uma linha de negócio comercial).

    Para criar uma configuração do motor, use o método projects.locations.instances.engineConfigs.create.

    Esta fase envolve o ajuste dos hiperparâmetros, que pode demorar algum tempo a ser processado. Se os seus dados não mudarem substancialmente, pode usar este passo para criar e testar muitos modelos.

    Corpo JSON do pedido:

    {
      "engineVersion": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineVersions/aml-commercial.default.v004.008.202411-001",
      "tuning": {
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
      },
      "performanceTarget": {
        "partyInvestigationsPerPeriodHint": "30"
      }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
      "engineVersion": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineVersions/aml-commercial.default.v004.008.202411-001",
      "tuning": {
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
      },
      "performanceTarget": {
        "partyInvestigationsPerPeriodHint": "30"
      }
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs?engine_config_id=my-engine-config"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
      "engineVersion": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineVersions/aml-commercial.default.v004.008.202411-001",
      "tuning": {
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
      },
      "performanceTarget": {
        "partyInvestigationsPerPeriodHint": "30"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs?engine_config_id=my-engine-config" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Criar um modelo

    Neste passo, prepara um modelo de IA de AML usando 12 meses de dados até 01/07/2021.

    Para criar um modelo, use o método projects.locations.instances.models.create.

    Corpo JSON do pedido:

    {
        "engineConfig": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
        "engineConfig": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models?model_id=my-model"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
        "engineConfig": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "primaryDataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2021-07-01T00:00:00Z"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models?model_id=my-model" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Crie um resultado do teste retroativo

    O teste retroativo da previsão usa o modelo preparado com base nos dados do histórico existentes. Crie um resultado do teste retrospetivo com os 12 meses de dados anteriores a janeiro de 2023, que não foram usados na preparação. Estes meses são usados para determinar quantos registos teríamos de trabalhar se tivéssemos usado o modelo preparado até julho de 2021 em produção durante janeiro a dezembro de 2022.

    Para criar um resultado do teste retrospetivo, use o método projects.locations.instances.backtestResults.create.

    Corpo JSON do pedido:

    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "backtestPeriods": 12,
        "performanceTarget": {
          "partyInvestigationsPerPeriodHint": "150"
        }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "backtestPeriods": 12,
        "performanceTarget": {
          "partyInvestigationsPerPeriodHint": "150"
        }
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults?backtest_result_id=my-backtest-results"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "backtestPeriods": 12,
        "performanceTarget": {
          "partyInvestigationsPerPeriodHint": "150"
        }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults?backtest_result_id=my-backtest-results" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Exporte metadados dos resultados dos testes retroativos

    Depois de executar um teste retrospetivo, tem de exportar os respetivos resultados para o BigQuery para os ver. Para exportar metadados do resultado do teste retrospetivo, use o método projects.locations.instances.backtestResults.exportMetadata.

    Corpo JSON do pedido:

    {
      "structuredMetadataDestination": {
        "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_backtest_results_metadata",
        "writeDisposition": "WRITE_TRUNCATE"
      }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
      "structuredMetadataDestination": {
        "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_backtest_results_metadata",
        "writeDisposition": "WRITE_TRUNCATE"
      }
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results:exportMetadata"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
      "structuredMetadataDestination": {
        "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_backtest_results_metadata",
        "writeDisposition": "WRITE_TRUNCATE"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results:exportMetadata" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results",
        "verb": "exportMetadata",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Quando a operação estiver concluída, faça o seguinte:

    1. Abra o BigQuery na Google Cloud consola.

      Aceda à Google Cloud consola

    2. No painel Explorador, localize e expanda o seu projeto.

    3. Expanda my_bq_output_dataset e clique em my_backtest_results_metadata.

    4. Na barra de menu, clique em Pré-visualizar.

    5. Na coluna Nome, encontre a linha com ObservedRecallValues.

      Valores de recall observados no BigQuery.

    6. Suponha que a sua capacidade de investigações é de 120 por mês. Encontre o objeto de valor de recolha com "partyInvestigationsPerPeriod": "120"`. Para os seguintes valores de exemplo, se limitar as investigações a partes com pontuações de risco superiores a 0,53, pode esperar investigar 120 novas partes todos os meses. Durante o período de testes retroativos, o ano de 2022, identificaria 86% dos casos que o sistema anterior identificou (e possivelmente outros, que não foram identificados pelos seus processos atuais).

      {
        "recallValues": [
          ...
          {
            "partyInvestigationsPerPeriod": "105",
            "recallValue": 0.8142077,
            "scoreThreshold": 0.6071321
          },
          {
            "partyInvestigationsPerPeriod": "120",
            "recallValue": 0.863388,
            "scoreThreshold": 0.5339603
          },
          {
            "partyInvestigationsPerPeriod": "135",
            "recallValue": 0.89071035,
            "scoreThreshold": 0.4739899
          },
          ...
        ]
      }
      

    Veja mais informações sobre os outros campos nos resultados do teste retrospetivo.

    Ao alterar o campo partyInvestigationsPerPeriodHint, pode modificar o número de investigações que um teste retrospetivo produz. Para obter classificações para investigar, registar partes e produzir previsões com base nas mesmas.

    Importe partes registadas

    Antes de criar resultados de previsão, tem de importar partes registadas (ou seja, clientes no conjunto de dados).

    Para importar partes registadas, use o método projects.locations.instances.importRegisteredParties.

    Corpo JSON do pedido:

    {
      "partyTables": [
         "bq://PROJECT_ID.my_bq_input_dataset.party_registration"
      ],
      "mode": "REPLACE",
      "lineOfBusiness": "COMMERCIAL"
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
      "partyTables": [
         "bq://PROJECT_ID.my_bq_input_dataset.party_registration"
      ],
      "mode": "REPLACE",
      "lineOfBusiness": "COMMERCIAL"
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance:importRegisteredParties"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
      "partyTables": [
         "bq://PROJECT_ID.my_bq_input_dataset.party_registration"
      ],
      "mode": "REPLACE",
      "lineOfBusiness": "COMMERCIAL"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance:importRegisteredParties" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "importRegisteredParties",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Continue a verificar o resultado dessa operação até que esteja concluída. Quando estiver concluído, deve ver que foram registadas 10 000 partes na saída JSON.

    Crie um resultado da previsão

    Criar um resultado de previsão nos últimos 12 meses no conjunto de dados. Estes meses não foram usados durante a preparação. A criação de resultados de previsão gera pontuações para cada parte em cada mês em todos os períodos de previsão.

    Para criar um resultado de previsão, use o método projects.locations.instances.predictionResults.create.

    Corpo JSON do pedido:

    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "predictionPeriods": "12",
        "outputs": {
          "predictionDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results",
            "writeDisposition": "WRITE_TRUNCATE"
          },
          "explainabilityDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability",
            "writeDisposition": "WRITE_TRUNCATE"
          }
        }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    cat > request.json << 'EOF'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "predictionPeriods": "12",
        "outputs": {
          "predictionDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results",
            "writeDisposition": "WRITE_TRUNCATE"
          },
          "explainabilityDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability",
            "writeDisposition": "WRITE_TRUNCATE"
          }
        }
    }
    EOF

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults?prediction_result_id=my-prediction-results"

    PowerShell

    Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

    @'
    {
        "model": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "dataset": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "endTime": "2023-01-01T00:00:00Z",
        "predictionPeriods": "12",
        "outputs": {
          "predictionDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results",
            "writeDisposition": "WRITE_TRUNCATE"
          },
          "explainabilityDestination": {
            "tableUri": "bq://PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability",
            "writeDisposition": "WRITE_TRUNCATE"
          }
        }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Em seguida, execute o seguinte comando para enviar o seu pedido REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults?prediction_result_id=my-prediction-results" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Analise um único caso de estruturação na Google Cloud consola

    1. Abra o BigQuery na Google Cloud consola.

      Aceda à Google Cloud consola

    2. No painel de detalhes, clique no separador Consulta sem título para ver o editor.

    3. Copie a seguinte declaração SQL para o editor e clique em Executar.

      SELECT *
      FROM `PROJECT_ID.my_bq_input_dataset.transaction`
      WHERE account_id = '1E60OAUNKP84WDKB' AND DATE_TRUNC(book_time, MONTH) = "2022-08-01"
      ORDER by book_time
      

      Esta declaração verifica o ID da conta 1E60OAUNKP84WDKB em agosto de 2022. Esta conta está associada ao ID de parte EGS4NJD38JZ8NTL8. Pode encontrar o ID da entidade para um determinado ID da conta através da tabela AccountPartyLink.

      Os dados de transações mostram transações frequentes de valores redondos segmentadas para uma única conta pouco depois de um grande depósito em numerário, o que parece suspeito. Estas transações podem ser indicativas de smurfing (ou seja, dividir uma transação de dinheiro grande em valores de transação mais pequenos) ou estruturação.

      Dados de transações suspeitas para uma única parte.

    4. Copie a seguinte declaração SQL para o editor e clique em Executar.

      SELECT *
      FROM `PROJECT_ID.my_bq_input_dataset.risk_case_event`
      WHERE party_id = 'EGS4NJD38JZ8NTL8'
      

      Esta declaração mostra que houve um caso de risco que levou à saída desta parte. O registo de risco começou dois meses após a atividade suspeita.

      Eventos de registo de risco para uma única parte.

    5. Copie a seguinte declaração SQL para o editor e clique em Executar.

      SELECT *
      FROM `PROJECT_ID.my_bq_output_dataset.my_prediction_results`
      WHERE party_id = 'EGS4NJD38JZ8NTL8'
      ORDER BY risk_period_end_time
      

      Ao verificar os resultados da previsão, pode ver que a pontuação de risco da festa aumenta de quase zero (tenha em atenção o valor do expoente) para valores elevados nos meses seguintes à atividade suspeita. Os seus resultados podem variar em relação aos resultados apresentados.

      As pontuações de risco aumentam para uma única parte.

      A classificação de risco não é uma probabilidade. Uma pontuação de risco deve ser sempre avaliada relativamente a outras pontuações de risco. Por exemplo, um valor aparentemente pequeno pode ser considerado positivo nos casos em que as outras pontuações de risco são mais baixas.

    6. Copie a seguinte declaração SQL para o editor e clique em Executar.

      SELECT *
      FROM `PROJECT_ID.my_bq_output_dataset.my_prediction_results_explainability`
      WHERE party_id = 'EGS4NJD38JZ8NTL8'
      AND risk_period_end_time = '2022-10-01'
      

      Ao verificar os resultados da explicabilidade, pode ver que as famílias de funcionalidades corretas obtêm os valores mais elevados.

      Resultados de explicabilidade para previsões.

    Limpar

    Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.

    Elimine o resultado da previsão

    Para eliminar um resultado de previsão, use o método projects.locations.instances.predictionResults.delete.

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/predictionResults/my-prediction-results",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimine o resultado do teste retrospetivo

    Para eliminar um resultado do teste retrospetivo, use o método projects.locations.instances.backtestResults.delete.

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/backtestResults/my-backtest-results",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimine o modelo

    Para eliminar um modelo, use o método projects.locations.instances.models.delete.

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/models/my-model",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimine a configuração do motor

    Para eliminar uma configuração do motor, use o método projects.locations.instances.engineConfigs.delete.

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/engineConfigs/my-engine-config",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimine o conjunto de dados

    Para eliminar um conjunto de dados, use o método projects.locations.instances.datasets.delete.

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance/datasets/my-dataset",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimine a instância

    Para eliminar uma instância, use o método projects.locations.instances.delete.

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://financialservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/my-instance" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.financialservices.v1.OperationMetadata",
        "createTime": CREATE_TIME,
        "target": "projects/PROJECT_ID/locations/LOCATION/instances/my-instance",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    

    Elimine os conjuntos de dados do BigQuery

    bq rm -r -f -d PROJECT_ID:my_bq_input_dataset
    
    bq rm -r -f -d PROJECT_ID:my_bq_output_dataset
    

    Elimine a configuração da tarefa de transferência

    1. Apresenta os trabalhos de transferência no projeto.

      Bash

      bq ls --transfer_config \
        --transfer_location=LOCATION \
        --project_id=PROJECT_ID  \
        --filter="dataSourceIds:cross_region_copy"
      

      PowerShell

      bq ls --transfer_config `
        --transfer_location=LOCATION `
        --project_id=PROJECT_ID `
        --filter="dataSourceIds:cross_region_copy"
      
    2. Deve ser devolvida uma saída semelhante à seguinte.

      name                                                                                       displayName                    dataSourceId       state
      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      projects/PROJECT_NUMBER/locations/LOCATION/transferConfigs/TRANSFER_CONFIG_ID    Copy the AML sample dataset.   cross_region_copy   SUCCEEDED
      

      Copie o nome completo, começando por projects/ e terminando em TRANSFER_CONFIG_ID.

    3. Elimine a configuração de transferência.

      Bash

      bq rm --transfer_config TRANSFER_CONFIG_NAME
      

      PowerShell

      bq rm --transfer_config TRANSFER_CONFIG_NAME
      

    O que se segue?