Mise à jour d’enregistrements à l’aide de la fusion
L’option de coalescence vous permet de mettre à jour les enregistrements de table cible existants lors de la transformation des données d’importation.
L’option de coalescence sur une carte de champ vous permet de spécifier si le champ cible sélectionné doit être utilisé pour la coalescence lors de la transformation des enregistrements de jeu d’importation. Si la case Fusion de la carte de champs est cochée, lorsque la ligne du jeu d’importation est transformée, l’instance recherche un enregistrement existant dans la table cible qui a la même valeur dans le champ Cible que le champ source de la ligne du jeu d’importation.
Options de coalescence
Plusieurs configurations sont possibles pour fusionner des données dans des jeux d’importation.
Pas de fusion
Si aucune fusion n’est définie, toutes les lignes importées sont traitées comme de nouveaux enregistrements. Aucun enregistrement existant n’est mis à jour.
Fusion à un seul champ
Vous pouvez fusionner sur un seul champ pour mettre à jour un enregistrement existant.
S’il existe un enregistrement de table cible avec la même valeur dans le champ de fusion que l’enregistrement de la table intermédiaire, l’enregistrement de table cible est mis à jour à l’aide des valeurs d’enregistrement du jeu d’importation.
Fusion à plusieurs champs
Vous pouvez fusionner sur plusieurs champs pour mettre à jour un enregistrement existant.
S’il existe un enregistrement de table cible avec les mêmes valeurs dans tous les champs de fusion que l’enregistrement de la table intermédiaire, l’enregistrement de la table cible est mis à jour à l’aide des valeurs d’enregistrement de la table intermédiaire. Toutes les valeurs de champ de fusion entre les tables cible et intermédiaire doivent correspondre pour fusionner plusieurs champs.
Fusion conditionnelle
Vous pouvez utiliser un script pour déterminer si une ligne de table intermédiaire doit fusionner vers un enregistrement cible.
La plupart des scripts de fusion conditionnelle sont définis dans le champ Script source d’une carte de champ pour le champ sys_id. Pour mettre à jour un enregistrement cible à l’aide des valeurs d’enregistrement de la table intermédiaire, le script doit renvoyer les sys_id de l’enregistrement de table cible.
Exemples de scripts de coalescence conditionnelle
Passez en revue des exemples de scripts de coalescence conditionnelle.
Mises à jour uniquement
Pour mettre à jour uniquement les enregistrements dans lesquels une correspondance est trouvée et ignorer les enregistrements dans lesquels aucune correspondance n’est trouvée, spécifiez un champ de fusion et ajoutez le script suivant en tant que script onBefore à la carte de transformation.
if (action == 'insert')
ignore = true;
Fusion conditionnelle à l’aide d’une remontée pas à pas
Vous pouvez utiliser des champs de remontée pas à pas dans un script de coalescence conditionnelle, par exemple pour faire correspondre l’adresse e-mail d’un utilisateur lors de l’importation de données d’incident.
Dans cet exemple, ce script est défini dans le script source d’une carte de champ pour la table cible Incident sys_id champ.
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;
}
Fusion conditionnelle avec une condition OU
Vous pouvez utiliser un script de fusion conditionnelle pour faire correspondre les enregistrements source et cible en fonction de plusieurs valeurs de champ. Contrairement à la fusion de plusieurs champs où tous les champs de fusion doivent correspondre, vous pouvez spécifier un script pour que seul l’un des champs corresponde.
Dans cet exemple, ce script est défini dans le script source d’une carte de champ pour la table cible sys_id champ Utilisateur.
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;
}
Valeurs de champ de fusion sensibles à la casse
Vous pouvez contrôler si un jeu d’importation fusionnera sur les valeurs correspondantes avec différents tickets.
Carte de champ Le champ sensible à la casse de fusion vous permet de fusionner des valeurs de champ par respect de la casse.
Par défaut, les champs marqués comme Fusion dans la carte de champs sont utilisés dans une recherche non sensible à la casse pour les enregistrements existants. Si la case Sensible à la casse fusion est cochée, l’instance tente de faire correspondre les valeurs de champ de fusion par ticket. L’enregistrement de table cible n’est mis à jour que si la valeur de l’enregistrement cible et de l’enregistrement intermédiaire du jeu d’importation a la même valeur et la même casse. Dans le cas contraire, un nouvel enregistrement est créé.
Fusionner sur des champs vides
Vous pouvez contrôler si un jeu d’importation fusionnera sur les champs sans valeur.
Le champ Fusion de champs de carte de champs vous permet de fusionner sur des champs sans valeur.
Par défaut, les champs marqués comme Fusion dans la carte de champs entraînent la recherche par le jeu d’importation d’un enregistrement cible dont la valeur de champ correspond à la valeur de l’enregistrement intermédiaire du jeu d’importation. Lorsque l’option Champs vides de fusion est sélectionnée pour cette carte de champs, une valeur vide dans l’enregistrement cible et l’enregistrement intermédiaire du jeu d’importation compte comme correspondance aux fins de la coalescence.
Par exemple, la carte de transformation de l’utilisateur fusionne sur le champ E-mail. Lorsque l’option Fusionner les champs vides est sélectionnée, un enregistrement source contenant une adresse e-mail vide fusionne en un enregistrement cible contenant une adresse e-mail vide.