Mettre à jour des enregistrements à l’aide de la fusion
L’option 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 champs vous permet de spécifier si le champ cible sélectionné doit être utilisé pour la fusion lorsque les enregistrements de jeux d’importation sont transformés. Si la case Fusion de la carte de champs est cochée, lorsque la ligne de 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 dans le champ Source de la ligne de jeu d’importation. Pour obtenir des instructions détaillées, reportez-vous à la section Créer une carte de champ.
Options de fusion
Il existe plusieurs configurations 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.
Si un enregistrement de table cible existe avec la même valeur dans le champ 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 du jeu d’importation.
Fusion à plusieurs champs
Vous pouvez fusionner sur plusieurs champs pour mettre à jour un enregistrement existant.
Si un enregistrement de table cible existe avec les mêmes valeurs dans tous les champs de fusion que l’enregistrement de table intermédiaire, l’enregistrement de 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 avec plusieurs champs.
Fusion conditionnelle
Vous pouvez utiliser un script pour déterminer si une ligne de table intermédiaire doit fusionner dans un enregistrement cible.
La plupart des scripts de fusion conditionnelle sont définis dans le champ Script source d’une carte de champs 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 l’sys_id de l’enregistrement de la table cible.
Exemples de scripts de fusion conditionnelle
Passez en revue des exemples de scripts de fusion 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 type « 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 d’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 sources et cibles en fonction de plusieurs valeurs de champ. Contrairement à la fusion à plusieurs champs où tous les champs de fusion doivent correspondre, vous pouvez spécifier un script pour qu’il ne requiert qu’un seul des champs corresponde.
Dans cet exemple, ce script est défini dans le script source d’une carte de champs pour la table cible de l’utilisateur sys_id champ.
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 champs de fusion sensibles à la casse
Vous pouvez contrôler si un jeu d’importation fusionnera sur des valeurs correspondantes avec des tickets différents.
La carte de champs Le champ sensible à la casse Fusion vous permet de fusionner les 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 est cochée, l’instance tente de faire correspondre les valeurs de champ Fusion par casse. L’enregistrement de table cible n’est mis à jour que si la valeur dans l’enregistrement cible et l’enregistrement intermédiaire du jeu d’importation ont la même valeur et le même ticket. Sinon, un nouvel enregistrement est créé.
Fusionner sur des champs vides
Vous pouvez contrôler si un jeu d’importation fusionnera sur des champs sans valeur.
La carte de champs Le champ Fusionner des champs vides vous permet de fusionner sur des champs sans valeur.
Par défaut, les champs marqués comme Fusion dans la carte des champs entraînent la recherche par le jeu d’importation d’un enregistrement cible avec une valeur de champ qui correspond à la valeur de l’enregistrement intermédiaire du jeu d’importation. Lorsque Fusionner des champs vides est sélectionné pour cette carte de champs, une valeur vide dans l’enregistrement cible et l’enregistrement intermédiaire du jeu d’importation compte comme une correspondance aux fins de fusion.
Par exemple, la carte de transformation de l’utilisateur fusionne dans 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.