FlowKit

Le node Compare Datasets de n8n : détecter écarts, doublons et manquants entre deux sources

Publié le 30 juillet 2026 · 4 min de lecture

« Le CRM dit 1 842 clients actifs, la facturation en compte 1 796. » Toute organisation qui fait vivre la même donnée dans deux systèmes connaît ce moment — et la réponse manuelle habituelle, l'export Excel avec RECHERCHEV, ne passe pas à l'échelle et ne se rejoue pas chaque nuit. Le node Compare Datasets de n8n industrialise exactement ce rapprochement : deux entrées, un champ de correspondance, et quatre sorties qui disent tout — identiques, différents, présents seulement d'un côté, présents seulement de l'autre. Le sujet est moins anecdotique qu'il n'y paraît : la synthèse de référence de Chu et al. présentée à SIGMOD en 2016 (« Data Cleaning: Overview and Emerging Challenges », voir sur Google Scholar) rappelle que la détection et la réparation des incohérences entre sources restent l'un des coûts majeurs des systèmes d'information — et que l'automatisation du rapprochement en est le premier levier.

Anatomie du node

Compare Datasets prend deux entrées (Input A et Input B) et se configure autour d'un paramètre central, Fields to Match : le ou les champs qui identifient la même entité des deux côtés — un email, un SKU, un identifiant de commande. Le node produit quatre sorties :

  • In A only : l'entité existe dans A mais pas dans B (par exemple, un client du CRM absent de la facturation).
  • In B only : l'inverse.
  • Same : présente des deux côtés, tous les champs comparés identiques.
  • Different : présente des deux côtés, mais au moins un champ diverge.

Chaque sortie se branche sur sa propre suite de traitement : c'est ce qui rend le node si expressif — le workflow est la politique de réconciliation.

Configuration : les trois réglages qui comptent

Les champs de correspondance. Choisissez un identifiant stable et normalisé. Un email comparé brut échouera sur Jean.Dupont@exemple.fr vs jean.dupont@exemple.fr : normalisez en amont (minuscules, trim) avec un node Set ou une expression. Plusieurs champs de correspondance se combinent (SKU + entrepôt pour du stock multi-emplacements).

Les champs à ignorer. Deux systèmes ont toujours des champs techniques qui divergent sans signification métier (updated_at, identifiants internes). Excluez-les de la comparaison, sinon la sortie « Different » devient un bruit permanent qui noie les vraies divergences.

La résolution des différences. Quand un item diverge, le node peut préférer la version A, la version B, ou inclure les deux versions dans l'item de sortie. Pour de la réconciliation sérieuse, gardez les deux versions : la suite du workflow journalise l'écart, applique la source de vérité champ par champ, et il reste une trace de ce qui a été écrasé.

Trois rapprochements types

CRM contre facturation. Rapprochement par email ou SIRET entre HubSpot/Pipedrive et l'outil de facturation : « In A only » part en création de fiche, « Different » alimente une revue des coordonnées divergentes. Le même pattern vaut pour Salesforce.

Stock ERP contre Shopify. Le comptage complet nocturne décrit dans notre guide de la synchronisation des stocks Shopify : les niveaux des deux systèmes sont exportés, rapprochés par SKU, et chaque sortie a sa conséquence — écart de quantité corrigé selon la source de vérité, référence manquante remontée à l'équipe catalogue.

L'export d'aujourd'hui contre celui d'hier. Compare Datasets sert aussi de détecteur de changements quand une source n'a ni webhook ni API d'événements : conservez l'export précédent (dans une Data Table ou un fichier), comparez-le au nouveau, et « In B only » + « Different » deviennent votre flux d'événements synthétique — nouveaux éléments et modifications, prêts à déclencher la suite.

En aval : que faire de chaque sortie

La valeur du rapprochement se joue après le node. Le schéma robuste :

  1. Same : rien, ou un simple compteur pour le rapport.
  2. Different : journalisation de l'écart (champ, valeur A, valeur B, horodatage) puis application de la règle de vérité — éventuellement une écriture SQL directe via le node Postgres.
  3. In A only / In B only : création ou archivage selon le sens de la synchronisation, ou mise en file de revue humaine pour les cas ambigus, avec approbation via Slack.
  4. Rapport : un Aggregate compte chaque catégorie et poste une synthèse quotidienne (« 1 793 identiques, 12 écarts corrigés, 3 en revue ») dans Slack — et une alerte franche au-delà d'un seuil, car 400 écarts un mardi matin ne sont pas une fluctuation, mais un incident.

Cette discipline — constat, trace, correction, alerte — est le cœur des pipelines auditables que nous packageons dans le Pack Conformité & Audit (149 €), où chaque donnée corrigée garde la mémoire de sa valeur d'origine.

Compare Datasets ou Merge ?

Retenez la distinction d'usage : Merge assemble (jointure, enrichissement, concaténation), Compare Datasets constate (identique, différent, manquant). Si votre besoin contient les mots « écart », « rapprochement », « qui manque » ou « qu'est-ce qui a changé », c'est Compare Datasets ; s'il contient « enrichir » ou « combiner », c'est Merge — et pour éliminer les doublons au sein d'une même source, c'est Remove Duplicates. Trois nodes, trois questions, et des workflows qui restent lisibles.

FAQ

Questions fréquentes

Quelle différence entre Compare Datasets et le node Merge ?

Le node Merge combine deux flux en un seul (jointure, concaténation, appariement par position) : son résultat est un jeu de données fusionné. Compare Datasets ne fusionne pas, il constate : il rapproche les deux entrées par champ de correspondance et ventile chaque item vers l'une de ses quatre sorties — identique, différent, présent seulement dans A, présent seulement dans B. Merge répond à « assemble-moi ces données », Compare Datasets à « dis-moi ce qui a changé ».

Comment comparer sur plusieurs champs à la fois ?

Le paramètre Fields to Match accepte plusieurs paires de champs : par exemple email + code_pays pour rapprocher des contacts, ou sku + entrepot pour des stocks multi-emplacements. Tous les champs de correspondance doivent coïncider pour que deux items soient considérés comme la même entité — le reste des champs sert ensuite à décider s'ils sont identiques ou différents.

Peut-on ignorer certains champs dans la comparaison ?

Oui, et c'est souvent indispensable : des champs techniques comme updated_at ou un identifiant interne diffèrent toujours entre deux systèmes sans que la donnée métier ait changé. Les options du node permettent d'exclure des champs de la comparaison (Skip Fields), pour que la sortie « Different » ne contienne que les vraies divergences.

Que faire quand les deux sources divergent : laquelle croire ?

C'est une décision métier, pas technique, et le node la matérialise : l'option de résolution permet de préférer la version A, la version B, ou de conserver les deux versions côte à côte dans l'item de sortie. La bonne pratique en réconciliation est de garder les deux versions, journaliser l'écart, puis appliquer la source de vérité désignée pour chaque type de champ — et d'alerter un humain au-delà d'un seuil d'écarts.

Bundle FlowKit Complet

269 €