Ingestão de dados

Extrapolando o limite de importação de registros para uma tabela

      Para garantir a performance de uma instância, a ServiceNow define uma série de propriedades de sistema para impor limites em algumas operações.
      Uma operação que certamente é capaz de causar lentidão para os usuários é a importação de um número muito grande de registros. Nesse artigo vamos analisar como é possível alterar temporariamente esse limite.


Tenho um amigo que tem um recado importante para te dar
Spiderman


      Lembre-se sempre:
      
      "Com grandes poderes vêm grandes responsabilidades".




      Para início de conversa precisamos ter em mãos um arquivo com cem mil registros a ser importado para uma tabela no nosso projeto.
      Existem algumas formas para criar um arquivo de testes. Eu optei por escrever um programa em Java capaz de gerar rapidamente um arquivo do tipo CSV contendo as cem mil linhas. O código-fonte que criei ficou assim:

programa java

      Conhecer uma Linguagem de Programação muitas vezes pode ser útil para resolver problemas do dia a dia. Caso queira fazer o download do arquivo CSV gerado, clique aqui.


Criando uma tabela para o carregamento de dados

      Dentro do seu Aplicativo crie uma tabela com apenas dos campos: nome e email.

tabela

      Para carregar os dados do arquivo CSV para a nossa tabela de destino, há uma sequência lógica a ser executada:

      1) Carregar o arquivo para uma tabela Stage (temporária);
      2) Criar um Transform Map para mapear os campos do arquivo com os campos da tabela target (destino);
      3) Executar a transformação.
      
      A primeira coisa a ser feita é clicar em System Import Sets > Load Data
      Aqui é basicamente selecionar:
      - Create table
      - Preencher o nome da tabela temporária no campo Label
      - Em Source of the import, selecione File
      - No campo File clique em [Choose File] para selecionar o arquivo CSV que contém os 100.000 registros

tabela stage

      - Clique em [Submit]

      2) Criar um Transform Map para mapear os campos do arquivo com os campos da tabela target (destino)

      Após o passo 1 você precisa aguardar até a conclusão da importação de dados. Quando a importação terminar você verá uma tela como a seguir:
      Clique em [Create transform map]

Import complete


      Em Name defina um nome para esse Mapa de Transformação;
      Em Source table informe a tabela Temporária já criada;
      Em Target table informe a tabela oficial criada dentro do Studio para receber os dados;
      Desmarque "Run business rules";
      Antes de clicar em Submit, clique em [Mapping Assist] para relacionar os campos.

Table Transform Map


      Utilize as seta Add > da esquerda para colocar o campo nome da tabela de relacionamento. Depois utilize Add < da direita para colocar o campo nome da tabela Target na tabela de relacionamento. Assim mapeamos que o campo nome da tabela temporária será gravado no campo nome da tabela oficial.
      Repita o processo para o campo email e depois clique em [Save]

Mapping Assist


      3) Executar a transformação.
      Nessa tela basta clicar em [Transform]

Link Transform


      Coloque o Transform Map para a tabela da direita e clique em [Transform]

Especificar o import set


      Ao término do processo, clique em [Transform history] para conferir os detalhes do processamento.

Transformação completa


      Confira o total de registros inseridos, atualizados, etc.

Histórico


      Consultando a tabela oficial é possível ver os registros inseridos.

Tabela final


Demonstração em Vídeo

__________
Instâncias corporativas geralmente possuem limites mais rígidos com relação ao número máximo de registros importados.
Conforme documentação oficial, criando o parâmetro glide.ui.export.limit na tabela sys_properties é possível aumentar esse limite. Lembre-se sempre do princípio de Peter Parker: Com grandes poderes vêm grandes responsabilidades.

Voltar