Aller au contenu

Combine l’insertion et la mise à jour en une seule opération, à partir d’une ou plusieurs colonnes que vous désignez comme clé de correspondance. Pour chaque ligne de la source : si une ligne correspondante existe dans la cible (mêmes valeurs de clé), elle est mise à jour ; sinon, une nouvelle ligne est insérée.

Utilisez cette étape lorsque vous avez un flux de données incrémentiel qui comprend à la fois de nouveaux enregistrements et des révisions d’enregistrements existants : mises à jour de ventes, modifications de fiches d’employés ou tout scénario où l’on veut toujours refléter l’état le plus récent. Choisissez soigneusement les colonnes de correspondance : les lignes qui partagent les mêmes valeurs de clé mais diffèrent sur les autres colonnes seront écrasées, et une mauvaise clé peut donc corrompre les données sans avertissement.

cible (existante)id 1 · Aid 2 · Bsource (incrémentielle)id 2 · B′id 3 · Ccorrespondance sur idrésultatid 1 · Aconservéid 2 · B′mis à jourid 3 · Cinséré
L’upsert fusionne la source dans la cible selon la clé de correspondance : une clé existante est mise à jour (id 2 → B′), une nouvelle clé est insérée (id 3). Choisissez la clé avec soin : les lignes qui la partagent sont écrasées.

Source et cible

Pour définir les tables source et cible, sélectionnez d’abord la table de données à extraire dans la liste déroulante Table source. Sélectionnez ensuite une table existante comme table cible dans la liste déroulante Table cible.

Table Upsert

Le Data Mapper sert à mapper les colonnes des données sources vers la table de données cible.

Le bouton de menu Inspecter la source offre d’autres moyens de mapper les colonnes de la source vers la cible :

  • Renseigner les deux tables de mappage : propage toutes les valeurs de la table de données source vers la table de données cible. C’est le comportement par défaut.
  • Renseigner uniquement la table de mappage source : mappe uniquement toutes les valeurs de la table de données source. C’est utile lorsque vous modifiez un workflow existant dont la structure des colonnes sources a changé.
  • Renseigner uniquement la table de mappage cible : propage toutes les valeurs vers la table de données cible uniquement.

Si les options de colonnes source et cible ne suffisent pas, vous pouvez ajouter d’autres colonnes à la table de données cible de plusieurs façons :

  • Tout propager insère toutes les colonnes sources dans la table de données cible, qu’elles existent déjà ou non.
  • Propager la sélection insère uniquement les colonnes sources sélectionnées.
  • Faites un clic droit côté cible et sélectionnez Insérer une ligne pour insérer une ligne juste au-dessus de la ligne actuellement sélectionnée.
  • Faites un clic droit côté cible et sélectionnez Ajouter une ligne pour insérer une ligne en bas (à l’extrême droite) de la table de données cible.

Pour supprimer des colonnes de la table de données cible, sélectionnez les colonnes voulues, faites un clic droit, puis sélectionnez Supprimer.

Pour réorganiser les colonnes de la table de données cible, sélectionnez les colonnes voulues. Vous pouvez utiliser :

  • Flèches de déplacement groupé : sélectionnez l’option de déplacement voulue avec les flèches en haut à droite
  • Menu contextuel : faites un clic droit et sélectionnez Déplacer en haut, Monter, Descendre ou Déplacer en bas.

Réduire le résultat aux enregistrements distincts uniquement

Section intitulée « Réduire le résultat aux enregistrements distincts uniquement »

Pour ne renvoyer que les enregistrements distincts, sélectionnez l’option de menu Distinct. Elle affiche une série de cases à cocher, une pour chaque colonne de la source. Il suffit de cocher la case en regard de la colonne correspondante pour ne renvoyer que les résultats distincts.

Selon la situation, vous pouvez envisager d’utiliser plutôt une synthèse.

Le traitement distinct conserve le premier enregistrement unique trouvé et écarte les autres. Il peut être judicieux de trier les données si la cohérence entre les exécutions est importante.

La grille des colonnes cibles comporte une colonne Clé de mise à jour, juste après le nom de la colonne cible. Cochez-la pour les colonnes qui, ensemble, identifient une ligne : une ligne source dont les valeurs de clé correspondent à une ligne déjà présente dans la cible met à jour cette ligne, et toute autre ligne source est insérée.

Toutes les colonnes sont cochées au départ : décochez donc celles qui ne font pas partie de la clé. Une colonne sans paramètre de clé de mise à jour, par exemple une colonne que Renseigner vient d’ajouter ou une colonne enregistrée via l’API sans ce paramètre, compte comme une clé. Au moins une colonne doit rester cochée.

Filtres de données de la table

Pour offrir un maximum de souplesse, des filtres de données sont disponibles sur les données source et sur les données cible. Pour les jeux de données volumineux, il peut être particulièrement avantageux de filtrer les lignes dès la source afin que les opérations suivantes portent sur un jeu de données plus petit.

Sélectionner un sous-ensemble de données

Ce type de filtre permet de filtrer les données source entrantes selon les conditions spécifiées.

Appliquer un filtre secondaire aux données de résultat

Ce type de filtre permet d’appliquer un filtre aux données de résultat après transformation, selon les conditions spécifiées. La possibilité d’appliquer un filtre au résultat transformé permet d’exclure des lignes en fonction du résultat de calculs complexes, de synthèses ou de fonctions de fenêtrage.

Découpage final de la table de données (limite)

Le découpage des lignes permet de limiter les lignes du jeu de résultats selon une plage et un point de départ.

Syntaxe des filtres

La syntaxe des filtres utilise Python SQLAlchemy, qui est la même syntaxe que celle des autres expressions.

Consultez des exemples et des fonctions d’expression dans la section Expressions.

  • Au moins une clé de mise à jour. Sinon, l’enregistrement est refusé avec le message At least one target column must be marked as Update Key.
  • Le mappage correspond à une table cible existante. Lorsque la table cible existe déjà, l’étape doit mapper chacune de ses colonnes, ne mapper aucune colonne que la table n’a pas et attribuer à chaque colonne le type de la table, afin qu’un upsert ne puisse pas supprimer une colonne de la table, avec ses données, ni changer le type d’une colonne. Les types numérique et monétaire comptent comme un seul type. Le refus nomme chaque différence, par exemple The target columns must match the existing target table ‘customers’. The table has columns the step doesn’t map: region. Une table cible qui n’existe pas encore, ou dont le nom est donné par une variable, est vérifiée à l’exécution de l’étape.
  • Un mappage vide est renseigné pour vous. L’enregistrement avec une table source choisie mais sans colonnes source ou cible renseigne le côté vide à partir de la source, comme le ferait Renseigner les deux tables de mappage.