Atualizando registros usando aglutinação

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 5 min. de leitura
  • A opção de aglutinação permite atualizar os registros da tabela de destino existentes ao transformar 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 aglutinar quando os registros do conjunto de importação forem transformados. Se a caixa de seleção Aglutinar do mapa de campo 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 os 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 de importação.

    Sem aglutinação

    Se nenhuma aglutinação for definida, todas as linhas importadas serão tratadas como novos registros. Nenhum registro existente será 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 do 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 à 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 se aglutinar em 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 do 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 os registros em que uma correspondência é encontrada e ignorar os registros em que 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 incidente.

    Neste exemplo, este script é definido no script de origem de um mapa de campo para o campo sys_id da tabela de destino do 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 OU

    Você pode usar um script de aglutinação condicional para corresponder aos registros de origem e de 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 apenas a correspondência de um dos campos.

    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 de campo de aglutinação que diferenciam maiúsculas de minúsculas

    Você pode controlar se um conjunto de importação se aglutinará em valores correspondentes com casos diferentes.

    O campo de mapa de campo Aglutinar distinção entre maiúsculas e minúsculas permite aglutinar valores de campo diferenciando maiúsculas e 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 distinção entre maiúsculas e minúsculas estiver marcada, a instância tentará corresponder aos valores de campo de aglutinação por maiúsculas e minúsculas. 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 de importação se aglutinará em campos sem valor.

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

    Por padrão, os campos marcados como Aglutinar no mapa de campo 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 campo, um valor vazio no registro de destino e no registro de preparação do conjunto de importação conta como uma correspondência para fins de aglutinação.

    Por exemplo, o mapa de transformação do usuário se aglutina 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 se aglutina em um registro de destino que contém um endereço de e-mail vazio.