Atualizando registros usando aglutinação

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 5 min. de leitura
  • A opção de aglutinação permite atualizar os registros da tabela de destino existentes ao transformar os dados de importação.

    A opção de aglutinação em um mapa de campo permite que você especifique se o campo de destino selecionado deve ser usado para aglutinação quando os registros do conjunto de importação forem transformados. Se a caixa de seleção Aglutinar do mapa de campos estiver marcada, quando a linha do conjunto de importação for transformada, a instância verificará se há um registro existente na tabela de destino que tenha o mesmo valor no campo Destino que no campo Origemda linha do conjunto de importação.

    Se um registro existente com um valor correspondente na tabela de destino for encontrado, esse registro será atualizado. Se nenhum registro correspondente for encontrado, um novo registro será criado na tabela de destino.
    Nota:
    Escolha campos na tabela de destino para aglutinar somente se esses campos tiverem valores exclusivos. Se mais de um registro na tabela de destino corresponder às opções de aglutinação especificadas, somente o primeiro registro correspondente na tabela de destino será atualizado.

    Opções de aglutinação

    Existem várias configurações possíveis que você pode usar para aglutinar dados em conjuntos para importação.

    Sem aglutinação

    Se nenhuma aglutinação for definida, todas as linhas importadas serão tratadas como novos registros. Nenhum registro existente foi atualizado.

    Aglutinação de campo único

    Você pode aglutinar em um único campo para atualizar um registro existente.

    Se houver um registro de tabela de destino com o mesmo valor no campo de aglutinação que o registro da tabela de preparação, o registro da tabela de destino será atualizado usando os valores de registro do conjunto de importação.

    Aglutinação de vários campos

    Você pode aglutinar em vários campos para atualizar um registro existente.

    Se houver um registro de tabela de destino com os mesmos valores em todos os campos de aglutinação que o registro da tabela de preparação, o registro da tabela de destino será atualizado usando os valores de registro da tabela de preparação. Todos os valores de campo de aglutinação entre as tabelas de destino e de preparação devem corresponder para a aglutinação com vários campos.

    Aglutinação condicional

    Você pode usar um script para determinar se uma linha da tabela de preparação deve ser aglutinada para um registro de destino.

    A maioria dos scripts de aglutinação condicional é definida no campo Script de origem de um mapa de campo para o campo sys_id. Para atualizar um registro de destino usando os valores de registro da tabela de preparação, o script deve retornar o sys_id do registro da tabela de destino.

    Exemplo de scripts de aglutinação condicional

    Analise exemplos de scripts de aglutinação condicional.

    Somente atualizações

    Para atualizar somente registros onde uma correspondência é encontrada e ignorar registros onde uma correspondência não é encontrada, especifique um campo de aglutinação e adicione o script a seguir como um script onBefore ao mapa de transformação.

    if (action == 'insert') 
      ignore = true;

    Aglutinação condicional usando referência com pontos

    Você pode usar campos de referência com pontos em um script de aglutinação condicional, como para corresponder ao endereço de e-mail de um usuário ao importar dados de incidentes.

    Neste exemplo, este script é definido no script de origem de um mapa de campo para o campo sys_id da tabela de destino de incidente.

    var gr = new GlideRecord('incident');
    gr.addQuery('caller_id.email', source.u_email); //check if the incident caller's email matches the import row email value
    gr.query();
    
    if(gr.next())
    {
        answer = gr.sys_id; //if a match exists, return the sys_id of the matching Incident record
    }
    else
    {
        answer= -1;
    }

    Aglutinação condicional com uma condição OR

    Você pode usar um script de aglutinação condicional para corresponder registros de origem e destino com base em vários valores de campo. Ao contrário da aglutinação de vários campos, em que todos os campos de aglutinação devem corresponder, você pode especificar um script para exigir que apenas um dos campos corresponda.

    Neste exemplo, este script é definido no script de origem de um mapa de campo para o campo sys_id da tabela de destino do usuário.

    var gr = new GlideRecord('sys_user');
    var qc = gr.addQuery('email', source.u_email); //first check if the user's email matches
    qc.addOrCondition('user_name', source.u_name); //alternatively, check if the username matches
    gr.query();
    
    if(gr.next()) 
    {
        answer = gr.sys_id; //if a match exists, return the sys_id of the matching User record
    }
    else 
    {
        answer = -1;
    }

    Valores do campo de aglutinação que diferenciam maiúsculas de minúsculas

    Você pode controlar se um conjunto para importação será aglutinado em valores correspondentes com casos diferentes.

    O mapa de campo Aglutinar campo com distinção entre maiúsculas e minúsculas permite aglutinar valores de campos diferenciando maiúsculas de minúsculas.

    Por padrão, os campos marcados como Aglutinar no mapa de campo são usados em uma pesquisa que não diferencia maiúsculas de minúsculas para registros existentes. Se a caixa de seleção Aglutinar diferencia maiúsculas de minúsculas estiver marcada, a instância tentará corresponder os valores do campo de aglutinação caso a caso. O registro da tabela de destino será atualizado somente se o valor no registro de destino e o registro de preparação do conjunto de importação tiverem o mesmo valor e maiúsculas e minúsculas. Caso contrário, um novo registro será criado.

    Aglutinar em campos vazios

    Você pode controlar se um conjunto para importação será aglutinado em campos sem valor.

    O campo Aglutinar campos vazios do mapa de campos permite a aglutinação em campos sem valor.

    Por padrão, os campos marcados como Aglutinar no mapa de campos fazem com que o conjunto de importação verifique se há um registro de destino com um valor de campo que corresponda ao valor do registro de preparação do conjunto de importação. Quando Aglutinar campos vazios é selecionado para esse mapa de campos, um valor vazio no registro de destino e no registro de preparação do conjunto de importação é contado como uma correspondência para fins de aglutinação.

    Por exemplo, o mapa de transformação do usuário é aglutinado no campo de e-mail. Com a opção Aglutinar campos vazios selecionada, um registro de origem que contém um endereço de e-mail vazio é aglutinado em um registro de destino que contém um endereço de e-mail vazio.