Atualizando registros usando aglutinação
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.
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.