Earn money by answering our surveys

Register now!

ETL : utilisation des opérateurs ternaires pour l’extraction de données dans Excel

Earn up to 50€ by participating in one of our paid market research.

Register now!

Comment utiliser une solution ETL pour extraire des informations d’un fichier Excel et les réconcilier ? Après vous avoir expliqué une méthode pour automatiser l’extraction à partir de nombreux fichiers Excel, dans le billet d’aujourd’hui je vais plus en profondeur et vous explique comment j’ai utilisé des opérateurs ternaires pour extraire l’information voulue.

Présentation du problème

Le problème auquel j’ai été confronté est relativement courant. Vous avez un fichier peu structuré rempli par un utilisateur ou par une machine et vous souhaitez en extraire des informations précises. Le format de fichier importe peu mais l’important est d’avoir une méthode qui permette d’extraire l’information et la restructurer.

Le problème d’extraction s’est présenté à moi lorsque j’ai reçu un paquet de fichiers Excel d’un client. Comme je l’expliquais dans mon billet précédent, un travail de reformatage manuel eût été possible mais en aucun cas pérenne. J’ai donc dû chercher une solution avec mon ETL préféré (Anatella) pour parvenir à mes fins. Et c’est en utilisant un opérateur ternaire que la magie a opéré.


Opérateur ternaire

Pour faire simple, l’opérateur ternaire est l’équivalent de la fonction SI dans Excel.
Si vous lisez cet article vous savez sans doute ce que c’est. Je vais donc me contenter de rappeler la syntaxe de l’opérateur et renvoyer ceux qui veulent en savoir plus à des ressources externes.
L’opérateur ternaire s’écrit donc comme suit : (condition)?(sivrai):(sifaux) et permet de renvoyer l’un ou l’autre argument en fonction de la condition testée.

Comment extraire les données de certaines cellules d’un fichier Excel

Il est fréquent de rencontrer des processus dans lesquels des templates Excel sont créés, distribués, remplis puis collectés pour analyser les données qui s’y trouvent. Le processus de data preparation peut rapidement devenir laborieux si les templates Excel sont nombreux ou s’il y a pléthore d’informations à extraire dans chaque template. Il y a par contre un aspect important que nous allons utiliser à notre avantage : les informations sont toujours entrées dans les mêmes cellules du fichier Excel.

Connaissant les coordonnées de la cellule dans la table, j’utilise la formule suivante pour extraire les bonnes données

_n == (numéro de la ligne)? numéro de la colonne:
nullS

Cette formule me permet de définir les cellules dont je veux extraire le contenu et me renvoie une cellule vide dans tous les autres cas. Voici ce que cela donne pour 3 cellules.

_n == 75? C5:
_n == 80? C4:
_n == 82? C4:
_nullS

En même temps j’en profite pour définir une variable “label” qui me permet d’associer le contenu de la cellule au type d’information extraite.

La structure initiale du fichier étant gardée, je me retrouve donc avec 2 colonnes (le contenu de la cellule, et le label) et beaucoup de lignes vides. Il ne me reste plus qu’à transposer l’information sur une ligne grâce à la fonctionnalité “unflatten”

Dernière petite difficulté : la date. L’extraction du champ “date” est au format “elapsed time”. Afin de pouvoir exploiter cette information dans une solution de data visualisation, il faut de préférence que tout soit converti dans un format du type date/mois/année (dd/mm/yyyy). Or Excel utilise une date de référence particulière.

Une fois ce dernier écueil passé, il n’y a plus qu’à sauver le résultat dans le format de votre choix.

Tags:

Author: Pierre-Nicolas Schwab

Pierre-Nicolas est Docteur en Marketing et dirige l'agence d'études de marché IntoTheMinds. Ses domaines de prédilection sont le BigData l'e-commerce, le commerce de proximité, l'HoReCa et la logistique. Il est également chercheur en marketing à l'Université Libre de Bruxelles et sert de coach et formateur à plusieurs organisations et institutions publiques. Il peut être contacté par email, Linkedin ou par téléphone (+32 486 42 79 42)

Share This Post On

Submit a Comment

Your email address will not be published. Required fields are marked *