Opções de mapeamento

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 6 min. de leitura
  • Você pode mapear campos de várias maneiras, dependendo das circunstâncias da importação e se os dados devem ser transformados antes de serem carregados em uma tabela de produção.

    Também é importante observar que qualquer operação de importação pode exigir o uso de vários métodos de mapeamento, e esses métodos podem ser usados prontamente em conjunto.

    Utilitário de mapeamento automático

    O método de mapeamento mais simples é quando todos os nomes de campos dos conjuntos para importação correspondem aos nomes dos campos nas tabelas de produção nas quais os dados serão transformados. Nesse caso, basta clicar em Mapear automaticamente os campos correspondentes na lista relacionada no formulário Mapa de transformação da tabela e confirmar a correspondência apropriada. Se houver discrepâncias em termos de como os campos foram correspondidos automaticamente, use o utilitário de assistência de mapeamento para corrigi-los. Quando todos os campos estiverem correspondidos corretamente, clique no link relacionado Transformar para começar a transformar os dados na tabela de destino.

    Utilitário de assistência de mapeamento

    O utilitário de assistência de mapeamento fornece um ambiente visualmente intuitivo para especificar o mapeamento entre campos de conjunto de importação e campos da tabela de produção. O utilitário de assistência de mapeamento torna possível mapear um único campo de origem (campo em uma tabela de conjunto de importação) para vários campos de destino (campos em uma tabela de produção).
    Figura 1. Ajuda de mapeamento

    Alterando o formato de data

    Se o formato de data do campo de origem não corresponder ao formato do campo de destino, você poderá definir um mapeamento de formato de data para transformar datas de um formato para outro. Por exemplo, este mapeamento especifica que o formato de data do arquivo de origem CSV usa o formato MM-dd-yyyy.
    Figura 2. Formato de data do mapa de campo
    Figura 3. Opções de formato de data do mapa de campo
    As opções de formato de data incluem:
    Tabela 1. Opções de mapeamento
    Formato de data Descrição
    dd-MM-aaaa Dia-mês-ano
    dd-MM-aaaa hh:mm:ss Dia-mês-ano horas-minutos-segundos
    dd-MM-aaaa hh:mm:ss z Fuso horário de horas-minutos-segundos dia-mês-ano
    MM-dd-aaaa Mês-dia-ano
    MM-dd-aaaa hh:mm:ss Mês-dia-ano horas-minutos-segundos
    MM-dd-aaaa hh:mm:ss z Fuso horário de horas-minutos-segundos mês-dia-ano
    aaaa-dd-MM Ano-dia-mês
    aaaa-MM-dd Ano-mês-dia
    aaaa-MM-dd hh:mm:ss Ano-mês-dia horas-minutos-segundos

    Para denotar o formato de 24 horas, especifique um formato de data personalizado usando HH:mm:ss em vez de hh:mm:ss.

    Nota:

    A conversão de um formato de data de 24 horas para 12 horas pode fazer com que as horas de 12:00 a 23:59 sejam formatadas como 00:00 a 11:59.

    Mapeamento para um campo de duração

    ServiceNow Os campos de duração usam um tipo de dados especial que lista o número de milissegundos em que o valor da duração é. Para mapear dados de importação para um campo de duração, use um dos métodos a seguir para transformar valores de origem em uma duração.
    • Calcular a duração a partir de uma data de início e de término
    • Converter um valor de duração existente em um valor de duração ServiceNow

    Calculando um valor de duração a partir de uma data de início e de término

    Se a origem de importação tiver uma data de início e uma data de término, você poderá calcular uma duração com JavaScript.
    1. Navegar até Conjuntos para importação do sistema > Mapas de transformação.
    2. Selecione o mapa de transformação para o qual você deseja calcular um valor de duração. Por exemplo, o mapa de transformação de notificação que é importado para a tabela Incidente.
    3. Marque a caixa de seleção Executar script.
    4. Insira JavaScript para transformar as datas de início e término em uma duração. Consulte o script de exemplo.
    5. Clique em Atualizar.
    Este script de exemplo transforma os campos source.u_start e source.u_end em um valor de duração no campo target.duration. Altere os nomes dos campos para corresponderem aos campos de origem e de destino, conforme necessário.
    target.duration = gs.dateDiff(source.u_start.getDisplayValue(), source.u_end.getDisplayValue(), false);

    Converter um valor de duração em um valor de duração da ServiceNow

    Se a origem de importação já contiver uma data de início e um valor de duração, você poderá converter a duração existente em uma duração ServiceNow. Por exemplo, você pode ter uma fonte de dados do Excel que lista uma duração em segundos. ServiceNow espera que as durações tenham valores de milissegundos.
    1. Navegar até Conjuntos para importação do sistema > Mapas de transformação.
    2. Selecione um mapa de transformação.

      Por exemplo, o mapa de transformação de notificação que é importado para a tabela Incidente.

    3. Marque a caixa de seleção Executar script.
    4. Insira JavaScript para converter valores de duração existentes em valores de duração ServiceNow. Consulte o script de exemplo.
    5. Clique em Atualizar.
    Este script de exemplo converte uma duração em segundos (do campo source.u_duration ) em uma duração em milissegundos (no campo target.duration ). Altere os nomes dos campos para corresponderem aos campos de origem e de destino, conforme necessário.
    //Transform the value in source.u_duration from seconds to milliseconds
    target.duration.setDateNumericValue(source.u_duration * 1000);
    Este script de exemplo converte uma duração já em milissegundos (do campo source.u_duration ) em uma duração ServiceNow (no campo target.duration ). Altere os nomes dos campos para corresponderem aos campos de origem e de destino, conforme necessário.
    //Transform the value in source.u_duration to ServiceNow format
    target.duration.setDateNumericValue(source.u_duration);

    Usando um script para calcular um valor de origem

    Convém usar um script de origem em vez do campo Origem quando:
    • O valor de origem não está no formato do valor de destino mapeado.
    • Você deseja pesquisar um valor antes de mapear para o campo de destino.
    • O valor de origem deve ser calculado a partir de vários campos.
    • Você precisa criar um valor de aglutinação composto ou calculado no campo de destino.
    Por exemplo, este script de origem de exemplo calcula o valor do campo user_name quando ele está em branco na origem.
    Figura 4. Script de origem do mapa de campo

    Um script de origem espera que o valor calculado seja definido na variável global answer.

    Mapeamento de campos binários ou BLOB

    ServiceNow usa um processo especial para importar dados binários e de objetos binários grandes (BLOB) de fontes de dados JDBC. Todos os dados binários são convertidos automaticamente em um registro na tabela Anexo [sys_attachment] antes que a transformação ocorra. A tabela de conjunto de importação armazena somente o valor sys_id do registro de anexo no campo da tabela de importação em vez do valor binário real. Por exemplo, suponha que você use uma fonte de dados JDBC para importar dados de um sistema do CA Service Desk, que armazena o valor de chave de cada registro como dados binários. Quando você importa os valores de chave da Central de serviços para uma tabela ServiceNow, o campo ServiceNow contém apenas uma referência sys_id para os dados binários correspondentes na tabela Registro de anexo [sys_attachment] em vez dos dados binários reais.

    Para que um mapa de transformação acesse o anexo, use a API GlideRecord em um script onAfter. O script precisa ser executado em um evento onAfter porque o objeto target.sys_id só está disponível depois que os dados são colocados na tabela de conjunto de importação. Por exemplo, para mapear o anexo resultante para o registro de transformação de destino, você pode usar o script a seguir.
    var agr = new GlideRecord("sys_attachment");
      agr.addQuery("sys_id", source.u_blob_field);
      // the source field needs to be mapped to the source that is the BLOB
      agr.query();
       if(agr.next()) {
        agr.table_name = "cmdb_ci"; // the target table of the transform map
        agr.table_sys_id = target.sys_id; // the target record
        agr.content_type = source.u_contentype; 
        // the content type string if available,  
        // this becomes the mime encoding when clicking an attachment link
        agr.update(); // finally, move/re-attach the attachment to the target row }
    Se você estiver mapeando diretamente para a tabela db_image, execute o seguinte script onAfter para exibir a imagem:
    var strTemp = source.u_file_name; 
    var fType = strTemp.substr(- 3); 
    var iCont = "" ;
     
     if(fType == 'jpg') {
      iCont = 'jpeg' ; } 
     else {
      iCont = fType; }
     
     var agr = new GlideRecord("sys_attachment");
     agr.addQuery("sys_id", source.u_blob_field);
     agr.query();
     
     if(agr.next()) {
      agr.table_name = "ZZ_YYdb_image";
      agr.table_sys_id = target.sys_id;
      agr.content_type = 'image/' + iCont;
      agr.file_name = 'image';
      agr.update(); }