Deux chiffres justes peuvent raconter deux ventes différentes

Deux rapports présentent « les ventes du mois ». Le premier utilise la date de commande. Le second attend la facture et enlève les retours. Les calculs sont justes et les totaux différents. La qualité commence donc par une définition, pas par le nettoyage des cellules.

Je décrirais une mesure avec grain, formule, date, inclusions et propriétaire. Ventes facturées nettes par jour et société indique davantage que ventes. Le grain empêche de joindre une ligne de facture à plusieurs paiements et de multiplier les montants.

Construire un chiffre traçable

Un pipeline simple ferait :

  1. extraire factures et lignes avec identifiant et version;
  2. charger dans une zone de staging sans écraser la source;
  3. valider dates, devises et clés;
  4. dédupliquer selon société, facture et ligne;
  5. convertir avec le taux applicable;
  6. soustraire avoirs reliés;
  7. agréger par date de facture;
  8. rapprocher total et nombre de documents avec le grand livre.

Le rapport publie date de fraîcheur et nombre de rejets. Si 2 % des lignes sont en quarantaine, il ne se présente pas comme complet. Les contrôles produisent une file assignée : code client inconnu, devise absente ou facture dupliquée.

Une dimension client peut changer de région. Pour analyser l’historique selon la région au moment de la vente, l’entrepôt garde des versions avec dates de validité. Écraser la région actuelle réécrit silencieusement les années précédentes.

Le processus doit savoir quoi faire d’une donnée douteuse

Bloquer toute facture pour une adresse secondaire manquante serait excessif. Accepter un prix négatif sans exception serait dangereux. Les règles ont sévérité : rejet, avertissement ou information. Le propriétaire métier choisit le seuil; la TI implémente et surveille.

Les corrections retournent à la source d’autorité. Modifier seulement l’entrepôt fait revenir l’erreur au prochain chargement. Chaque correction garde ancienne valeur, raison, personne et version. Les accès séparent données sensibles et agrégats; les environnements de test utilisent un masque cohérent.

Une panne de chargement ne doit pas publier une demi-journée. On écrit dans une partition temporaire, valide, puis bascule atomiquement la version publiée. Rejouer le même lot est idempotent. Le tableau de bord peut rester sur la dernière version saine tout en affichant son âge.

Surveiller la dérive d’une définition

Même une mesure certifiée peut changer lorsque la source introduit un nouveau type de transaction. Je garderais la distribution des codes, montants nuls, devises et délais de facturation, puis comparerais chaque lot à une fenêtre historique. Une catégorie inconnue ou une rupture brutale déclenche une revue avant publication. Le pipeline ne présume pas qu’un schéma inchangé conserve le même sens. Le propriétaire décide si la nouvelle catégorie entre dans les ventes et fixe sa date d’effet. Un jeu de tests avec exemples historiques vérifie le calcul. Cette surveillance attrape la dérive métier que les contraintes de type et de clé ne peuvent pas voir.

Je choisirais cinq indicateurs importants et ferais remonter chacun jusqu’aux documents sources, avec un mois rapproché. Si deux définitions sont nécessaires, je garderais deux noms clairs. La donnée « propre » est moins une cellule parfaite qu’un chiffre dont le sens, le trajet et les exceptions sont visibles.