Skip to main content

Batch Load Ingestion

É o método para mover arquivos de storage para a camada BigQuery da Carol de forma rápida e de baixo custo. Comporta grandes volumes de dados em pacotes, garantindo alta performance e eficiência na integração estruturada.

1. Habilitação da funcionalidade

Para iniciar qualquer operação de carga em lote, a funcionalidade deve ser liberada na estrutura organizacional:

  • Na página da organização, clique em “Organization Admin” -> “Tenants” e escolha a tenant específica que será habilitada.

Menu de seleção de Tenants na Carol

  • Clique em “Edit” e, em “Tenant Options”, deve-se marcar a opção “Batch ingestion enabled” como habilitada.

Ativação da opção Batch Ingestion Enabled

Assim que a habilitação é feita e salva, o sistema cria automaticamente no bucket do Google Cloud Platform (GCP) da tenant a estrutura de pastas raiz para carregamento dos dados. Basta abrir a interface GCP da tenant em questão no ícone abaixo e buscar por "Buckets" ou "Cloud Storage":

Acesso a GCP do projeto da Tenant

Estrutura de pastas de Ingestão no Google Cloud Storage

2. Estrutura de diretórios e landing zones

A organização dos arquivos no bucket segue uma lógica de separação por tipo de conexão e status de processamento.

2.1 Transfer (Conexão externa)

Destinado a dados oriundos de outros projetos ou provedores de cloud. Essa opção deve ser utilizada quando a intenção é transferir dados de outros buckets GCP que estão em diferentes projetos. A primeira etapa é de transferência ao bucket da tenant, na pasta batch-transfer-landing, e desse bucket os arquivos são processados e enviados para Staging Table de destino. A configuração é feita a nível de Organization. Basta seguir as coordenadas da etapa 3 para garantir o direcionamento correto dos dados.

  • Diretório raiz: batch-transfer-landing/.

Nota: Suporte a outros provedores de cloud e novas flexibilizações da funcionalidade estão planejados para versões futuras.

3. Ingestão à nível de Organization

Nota: A configuração via Organization foi desenvolvida e homologada para o modelo Smartlink de organização de buckets, pastas, arquivos e metadados. Implementações com estruturas distintas podem exigir adaptações. Para mais detalhes, entre em contato com o time técnico.

Esse modelo deve ser utilizado para conexão externa (bucket de outro projeto) quando, no mesmo projeto, temos dados de várias Tenants separados por buckets. Dentro de cada bucket, deve existir a configuração do metadado no arquivo determinando sua Staging Table de destino. A criação da conexão é feita em “Tenant Admin” -> “External Ingestion” -> “+Add configuration”:

Interface de Org Admin com opção de Add external Ingestion Org

Nesse cenário, o preenchimento correto das configurações da conexão é fundamental para envio correto dos dados a cada tenant e staging de destino.

Configuração geral External Ingestion Org

O campo “Environment” pode entrar como variável no nome do bucket caso isso seja determinante para distribuição dos dados nas tenants. A variável {tenantId} também pode fazer parte desse conjunto e dessa forma através do nome do bucket a conexão vai direcionar os dados para tenant correta. Após salvar a conexão, você consegue adicionar quais tenants estão envolvidos nesse processo selecionando a(s) tenant(s) em questão e clicando em Add x tenant(s). Assim você consegue verificar se a composição do nome do bucket ficou correta:

Tenants contempladas no processo e formatação de nome de bucket para validação

É dessa forma que é definido qual tenant receberá os dados de qual bucket. A configuração de connector e staging table é feita a partir dos metadados dos arquivos do bucket. Basta fazer as referências necessárias no preenchimento da configuração:

Configuração de metadados

Assim, a configuração de Org terá:

  • Mapeamento de bucket name para direcionamento de dados em diferentes tenants
  • Mapeamento de connector e staging para direcionar, dentro de cada tenant, ao connector e staging corretos.

Ponto de atenção: No caso de configuração via Organization, o acesso liberado via STS precisa ser no projeto GCP de origem. Como serão coletados dados de vários buckets (de acordo com {env} e {tenantId}), não é possível conceder o acesso apenas a um bucket. A etapa que gera o comando a ser executado já contempla esse cenário abrangente:

Comando de acesso ao projeto GCP

Após o cliente executar o comando, você consegue testar a conexão com um path de bucket como exemplo:

Validação de liberação STS

Ao executar o processamento da conexão, uma task na Organization é criada e nela são referenciadas as tasks “filhas”, em cada tenant que foi selecionada.

Task da Org referenciando as tasks de cada tenant envolvida

Assim é possível verificar diretamente em cada tenant a task de processamento completas e logs.

4. Validação e rastreabilidade

O sistema move os arquivos automaticamente para pastas de status após o processamento, tanto em ingestion quanto em transfer.

  • Success: Arquivos processados e inseridos com sucesso.
  • Failed: Arquivos que falharam (ex: erro de tipo de dados ou formato incompatível como JSON que não seja JSONL).

5. Monitoramento e logs

O controle é feito através da área Activity Management na Carol.

  • Detalhamento de logs: É possível acompanhar em qual batch (pacote) a tarefa se encontra, uma vez que o sistema divide grandes volumes de dados em pacotes menores.
  • Métricas de progresso: Os logs exibem a quantidade de arquivos processados e a porcentagem de conclusão de cada pacote.
  • Controle de duplicidade: Se a tarefa for iniciada (por agendamento ou manualmente) e o sistema detectar que não existem arquivos novos no bucket desde a última transferência, a task é registada, mas o processamento não é executado para evitar duplicidade de dados.

Task de Batch Load no Activity Management

  • Task de mudança de esquema: Através dos logs, é possível monitorar a tarefa específica do notify schema change (que acontece quando a execução do batch é feita em uma staging com schema flexível) que roda simultaneamente à execução do batch para validar e detalhar quais novos campos foram adicionados à tabela.

Task de mudança de schema no Activity Management

6.1 Configurações gerais da conexão

CampoDescrição
NameNome da conexão
ProviderGCS
EnvironmentSelecionar entre ambiente "Development" ou "Production"
Customer GCP projectNome do projeto GCP que contém os buckets origem
Bucket template{env}-smartlink-tenant-{tenantId}
Prefix*/protheus/delta/intake/*
File pattern*
Record pathrows
Connector suffix_carol
Schedule cronAgendamento da execução
StatusEscolher entre conexão "Active" ou "Paused"

Exemplo modelo Smartlink 1

6.2 Large-scale transfer mode (STS)

  • Test with bucket: Colar qualquer nome de bucket como exemplo para validar o acesso via STS.

Exemplo modelo Smartlink 2

6.3 Metadata Field Mapping

Nesse passo deve-se mapear quais campos dos metadados dos arquivos do bucket vão direcionar para quais staging tables e connectors. O campo de Batch ID é obrigatório para garantir a rastreabilidade dos dados, e o campo de Batch ID Sequence é recomendado para facilitar o monitoramento do progresso da ingestão.

CampoValor
Staging TableTableName - Irá direcionar para a tabela de staging correspondente
ConnectorErp - Irá direcionar para o conector correspondente
Batch IDBatchId - Irá garantir a rastreabilidade dos dados
Batch ID SequenceMessageNumber - Irá facilitar o monitoramento do progresso da ingestão

Exemplo modelo Smartlink 3

6.4 Tenant Allow List

Nesse passo deve-se selecionar quais tenants estão autorizadas a participar do processo de ingestão via batch. A partir da seleção, o sistema já exibe o nome do bucket formatado com as variáveis para validação.

Exemplo modelo Smartlink 4