Mise à jour des enregistrements à l’aide de la fusion

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 5 minutes de lecture
  • L’option de fusion vous permet de mettre à jour les enregistrements de table cible existants lors de la transformation des données d’importation.

    L’option de fusion d’une carte de champs vous permet de spécifier si le champ cible sélectionné doit être utilisé pour fusionner lors de la transformation des enregistrements de jeux d’importation. Si la case Fusion de 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.

    Si un enregistrement existant avec une valeur correspondante dans la table cible est trouvé, cet enregistrement est mis à jour. Si aucun enregistrement correspondant n’est trouvé, un nouvel enregistrement est créé dans la table cible.
    Remarque :
    Choisissez les champs de la table cible sur lesquels fusionner uniquement si ces champs ont des valeurs uniques. Si plusieurs enregistrements de la table cible correspondent aux options de fusion spécifiées, seul le premier enregistrement correspondant de la table cible est mis à jour.

    Options de fusion

    Il existe plusieurs configurations possibles que vous pouvez utiliser 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 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 avec plusieurs champs.

    Fusion conditionnelle

    Vous pouvez utiliser un script pour déterminer si une ligne de table intermédiaire doit fusionner avec 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 la 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 lorsqu’une correspondance est trouvée et ignorer les enregistrements lorsqu’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 fusion 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 champs 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 à plusieurs champs où tous les champs de fusion doivent correspondre, vous pouvez spécifier un script pour exiger 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 le 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 champ de fusion sensibles à la casse

    Vous pouvez contrôler si un jeu d’importation fusionnera sur des valeurs correspondantes avec différents tickets.

    Le champ sensible à la casse de fusion de la carte de champs 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 de la 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 l’enregistrement intermédiaire du jeu d’importation ont la même valeur et la même casse. 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.

    Le champ Fusion de champs vides de carte de champs vous permet de fusionner des champs sans valeur.

    Par défaut, les champs marqués comme Fusion dans la carte de champs obligent le jeu d’importation à rechercher un enregistrement cible dont la valeur de champ correspond à la valeur de l’enregistrement intermédiaire du jeu d’importation. Lorsque l’option Fusion des champs vides 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 une correspondance aux fins de la fusion.

    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.