Faut-il continuer à utiliser des fichiers CSV pour vos projets data?

data validation

Inventé, ou en tout cas utilisé depuis 1972 (selon Wikipedia), le format de fichiers CSV, ou Comma Separated Values représente toujours une part importante de l’intégration de données. Parce que les premiers softwares codés en Fortran les supportaient, et qu’ils sont lisibles par tout un chacun, ils restent bien souvent la manière la plus facile d’exporter et d’importer de la donnée structurée.

Aujourd’hui, la plupart des systèmes d’exploitation proposent Excel comme application par défaut pour les ouvrir, et les fichiers Excel natifs sont facilement exportables comme CSVs. En cela, le facteur humain s’immisce dans la chaîne de traitement de données, avec tout le potentiel d’erreur que cela peut impliquer.

Homme vs. Machine

À titre d’exemple, considérons une situation dans laquelle les données de revenus et dépenses sont consolidées chaque semaine dans 5 pays et sur 10 villes chacun. Si p représente la probabilité d’erreur humaine dans chacun des fichiers source et P la probabilité d’obtenir un rapport annuel erroné agrégeant les rapports hebdomadaires, alors P est égal à 1- (1-p) (5 *10*52)

En d’autres termes, si vous tolérez 1% d’erreur au niveau de la ville et de la semaine, vous devrez vivre avec 99,999999999% de chances d’erreur dans le rapport annuel (ce qui représente 11700 fois les chances de gagner au loto en France ! Même si vous ne tolérez que 0,1% d’erreur humaine au niveau le plus bas, vous obtenez 8% de chances de produire un mauvais rapport annuel.

Valider…

Même si l’humanisme est une (noble !) motivation pour beaucoup d’entre nous, nous sommes loin d’être de parfaites machines. La réaction normale des ingénieurs pour réduire le risque d’erreur serait d’introduire des redondances et de diminuer p en demandant à quelqu’un d’autre de vérifier le travail de la première personne. C’est une bonne approche car elle réduit p à p2 qui transforme 1% en 0,01%. L’autre approche consiste à déterminer un ensemble de formules qui détectent les erreurs et créent des mécanismes automatisés pour les implémenter. De fait, des comptables bien formés intègrent généralement des feuilles de calcul, des formules qui génèrent des indicateurs d’erreurs possibles et la pratique comptable de « Balancing the Books » qui consiste à vérifier que toutes les recettes et les dépenses ont été prises en compte en calculant la différence entre les deux, est un exemple ultime d’un tel travail de vérification.

Les plates-formes telles que ForePaaS sont bien équipées pour contribuer à ces pipelines de traitement de données hybrides où les humains sont tenus de télécharger des fichiers .csv via une interface dédiée (Drop Zones) et des scripts python implémentent des contrôles à différents niveaux. Pour l’un de nos gros clients, dont l’organisation implique que ses fichiers soient téléchargés par un grand nombre de sous-traitants tiers, nous avons mis en place un ensemble de règles qui fonctionnent à la fois au niveau « structurel » et « sémantique ».

Une règle structurelle vérifiera des éléments tels que l’existence d’une valeur et de son type de données dans le fichier et visera principalement à éviter les erreurs de frappe ou de manipulation. Un fichier sera rejeté ou mis en quarantaine si une variable est manquante ou mal écrite et un message d’erreur s’affichera immédiatement pour correction.

La règle sémantique appliquera une logique au contenu des fichiers afin de les accepter ou les rejeter. Par exemple, un indicateur de « degré d’achèvement » ne devrait augmenter que vers 100% et toute diminution d’une semaine à l’autre entraînerait une erreur nécessitant une correction ou une justification.

Un troisième niveau de validation peut se faire en le comparant à une « valeur attendue ». Un modèle prédictif peut estimer ce qui serait une valeur normale sur la base de données historiques et d’autres sources telles que la météo ou les jours fériés. Tout écart d’une certaine amplitude par rapport à cette valeur nominale générerait à son tour une alerte pour demander une confirmation de la qualité des données avant leur injection dans le pipe de production.

…et automatiser!

L’automatisation, quant à elle, prend en charge les manipulations et calculs répétitifs sujets aux erreurs et applique la même logique à toutes les données tant que la structure est conforme aux attentes. Elle doit être correctement orchestrée et les tâches peuvent être sérialisées ou parallélisées pour des performances. Le déclenchement conditionnel peut aider à capturer une logique complexe qui traite une grande variété de situations.

Par exemple, un département qui ne vend pas certaines gammes de produits ne sera pas inclus dans la répartition de leurs coûts fixes et ceux qui vendront la gamme de produits seront impactés proportionnellement à leur part dans les volumes de ventes globaux au cours d’une période donnée. Cela signifie que les chiffres des ventes doivent être calculés avant les étapes de répartition des coûts fixes et si toute révision future de ces dernières indique l’existence de ventes de lignes de produits qui n’ont pas eu d’impact sur une unité commerciale auparavant, alors les nombres de toutes les unités commerciales impactées doivent être recalculés. Si elle était effectuée manuellement, une telle modification des règles de calcul serait difficile à imposer étant donné que la charge de travail (imprévue) d’autres personnes serait requise.

Longue vie aux CSV

Les fichiers CSV ont donc encore de beaux jours devant eux et tant qu’ils sont traités au sein d’une plate-forme comme ForePaaS qui offre des capacités adéquates, ils livreront toujours les résultats escomptés pour vos projets de visualisation et data science.

Si ce sujet vous inspire et que vous avez rencontré ce genre de problématiques dans votre entreprise, n’hésitez pas à nous contacter et à partager votre propre expérience avec les fichiers CSV.