Greboca  

Suport technique et veille technologique

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  Oui, Illico !

 -  Avril 2017 - 

Toute ressemblance avec des personnes existantes ou ayant existé est purement fortuite.
> Dis Arnaud, tu n’aurais pas un outil magique pour m’aider à nettoyer mes données et m’éviter d’y passer ma journée ma soirée mon week‐end ? :(
> Si, Illico !

En très court, Illico propose un catalogue de fonctionnalités prêtes à l’emploi, génériques (paramétrables) pour améliorer la qualité des données.

Et en une minute, Illico, c’est quoi ?

Illico Editor est un couteau suisse de la qualification de données, en JS/HTML, publié sous licence GPL v3. L’outil s’adresse à tous et toutes (et pas uniquement à des expert·e·s informatiques) et permet de manipuler, corriger, re‐structurer des données en quelques clics. Par exemple, des données issues d’un tableur, d’une base de données, d’une application métier, etc., que l’on souhaite corriger ou pour lesquelles on souhaite établir des indicateurs statistiques simples ou complexes, lister et filtrer ces données, les enrichir avec d’autres sources, etc.

Sommaire

Qu’est‐ce que ça peut m’apporter ?

À l’usage, les gains de temps observés se situent à plusieurs niveaux :

durant la phase d'exploration de données (analyse)

Les acteurs métiers (comptabilité, RH, administratif, etc.) sont autonomes durant cette phase ; sans Illico, les collègues de l'informatique devaient jusqu'à présent leur développer des routines (macro, scripts, programme dédié) de corrections de données ou de transformation de la structure des données comme des pivots de colonnes/lignes.
Ces développements sont souvent trop en lien avec la structure des données ou avec le langage de programmation fétiche du développeur et à chaque nouveau chantier qualité de données il fallait re-développer (parfois dans une autre techno).

Généralement juste ajouter une nouvelle colonne imposait de vérifier toutes les routines : c'était très sensible aux données et au final assez laborieux.

S'il s'agit d'un projet de reprise de données (exemple : export d'une base de données, nettoyage puis ré-importation), des fonctionnalités très typées base de données (champs null, valeurs uniques, longueurs des champs, normalisation selon Merise, etc.) sont présentes dans Illico.

durant la phase de correction

Les acteurs métiers peuvent corriger en masse dans Illico et le résultat sera exporté dans un fichier CSV (ou par un copier-coller global vers un tableur). On évite ainsi de manipuler des données de production et aussi de devoir créer un environnement de test juste pour permettre aux utilisateurs de vérifier/corriger leurs données.

Illico produit un journal de bord, une sorte de documentation auto-générée par l'outil.
Une fois que les acteurs métiers ont réalisé un premier nettoyage et que des équipes informatiques doivent implémenter/automatiser les mêmes étapes (dans un ETL, un sas de nettoyage de données, etc.), Illico et le journal de bord deviennent une aide précieuse pour tester rapidement la qualité de l'implémentation.

durant la phase de restitution

Illico permet de produire des tableaux de synthèse (exemple tableaux croisés dynamiques à plusieurs niveaux de profondeur),

en général (exemples)

Vous connaissez sûrement ces situations :

  • pour un nouveau projet informatique, on a besoin de transformer des données d'un format à un autre dans la phase de chargement initial de données ;
  • pour tout projet de refonte d'application avec reprise des données, on cherche à passer d'un format source à un format cible (exemple : la structure de la base de données relationnelles est différente) ;
  • dans le cas de préparation d'un annuaire ou d'une liste d'individus à contacter (préparation d'un publipostage, ou mass-mailing), on veut harmoniser la présentation des informations (majuscules etc.) ;
  • dans les métiers supports (administratif, RH, compta, etc.), on souhaite créer une liste d'individus (liste des promouvables, liste des personnes à évaluer, liste des personnes éligibles, etc.) en appliquant successivement plusieurs règles métiers d'ajout/soustraction :
    • liste de départ : tout le monde ;
    • on filtre : on conserve ceux qui ont droit ;
    • on soustrait : ceux qui ont déjà eu ;
    • on ajoute : ceux qui n'ont pas pu avoir ;
    • on soustrait : ceux qui partiront avant la date d'effet ;
    • on rajoute : ceux qui arriveront d'ici la date d'effet.

Sans outil, ce type de gymnastique peut devenir très chronophage.

Pourquoi un outil de plus ?

le constat

Quel que soit votre métier et votre besoin, il vous faudra une excellente connaissance des données ET un outil particulièrement accessible et souple. Mais quel outil ? un tableur, une base de données, une base du type Access, Kexi ou FileMaker, un script, une nouvelle application dédiée ? …
Existe-il un outil qui couvre tous les types d'actions ? ou un-e collègue qui connaisse tous les outils/techno qui pourrait servir ici ? et qui soit disponible pour vous aider ?

Faut-il faire monter en compétence les acteurs métiers à des outils techniques (SQL ? macro VBA ?) ou former les programmeurs à des problématiques métiers ? À l'exception des administrateurs technico-fonctionnels, avoir une double expertise ne semble pas très pertinent (surtout si l'expert-comptable ne se sert du SQL que 2 fois dans l'année).

Est-ce un problème insoluble ?

la solution théorique

La solution paraît simple sur le papier :

  • apporter un outil accessible aux utilisateurs métiers pour s'affranchir d'un coût d'apprentissage technique très conséquent ;
  • (pour faire simple) que cet outil soit aussi efficace qu'un développeur/adminDB.

Illico : un outil ou une approche ?

Il existe actuellement des outils très pertinents pour aider au nettoyage des données. Certains peuvent s'avérer assez lourds (licence, techno, machine puissante, dépendances) ou juste inconnus/hors de portée des acteurs métiers qui en ont besoin.

Illico tente de pallier à cela dans une approche originale où toutes les fonctionnalités se présentent de la même manière et demandent (selon les paramètres, et en moyenne) entre 2 et 4 clics.

Par exemple, les actions suivantes se réalisent de la même façon :

  • faire un pivot complexe ;
  • mixer des colonnes A et B avec une règle spécifique (exemple : prendre la valeur de B quand celle de A est vide sinon prendre celle de A) ;
  • visualiser un tableau croisé dynamique ;
  • traiter des données en liste (dans une même cellule/case) ;
  • faire un pivot ou mettre une colonne en majuscule ;
  • supprimer les lignes vides.

Il n'y a en réalité pas de raison pour que mettre une colonne en minuscule soit plus simple à programmer que faire une différence symétrique entre deux sources de données. À l'oral, il faut 2-3 secondes de plus pour l'exprimer ? eh bien dans Illico, ce sera 2-3 clics supplémentaires, pas plus !

En pratique, ça se passe comment ?

livré clé en main

Vous pouvez tester ou utiliser la version en ligne (les données ne quittent pas votre poste) ou la télécharger en local :

  1. téléchargez ;
  2. décompressez ;
  3. ouvrez la page index.html (c'est une copie conforme du site officiel qui inclut la documentation et le tutoriel de prise en main) ;
  4. cliquez sur « accès direct », vous y êtes.

Vous pouvez consulter la documentation utilisateur complète avec des exemples ou tout simplement suivre le tutoriel de prise en main (qui comprend un fichier d'exemple).

le moins d'étapes possibles

Dans Illico, il n'y a pas d'étapes préliminaires de description du format de la source de données (nombre de colonnes, types de données, etc.).

  1. Vous copier-collez vos données depuis un tableur ou vous importez un fichier CSV et dans les deux cas le séparateur de colonne est automatiquement détecté (vous pouvez le forcer au besoin) ;
  2. vous appliquez une transformation ;
  3. vous analysez le nouvel état des données ;
  4. vous exportez, annulez ou poursuivez avec une autre transformation.

un petit aperçu

le domaine de valeur

Équivalent à un tableau croisé dynamique sur 1 dimension avec total et ratio… en 1 clic.

domaine de valeur sur une liste d'individus

Le tableau de synthèse est exportable au format HTML ou CSV.

l'analyse et traitement des doublons

plusieurs traitements possibles : filtrer, exclure, marquer, analyser

Il est possible d'identifier les doublons sur plusieurs colonnes (le même nom, les mêmes nom et prénom, les mêmes nom et prénom et email, etc.).

Au choix, le traitement des doublons sera de les :

  • filtrer (conserver) ;
  • exclure (suppression) ;
  • marquer (ajoute une colonne en début de tableau avec un identifiant pour chaque groupe de doublons) ;
  • marquer et filtrer ;
  • analyser (tableau de synthèse).

exploration de données

Enchaînements de tableaux croisés dynamiques

On compte le nombre de vacations :

  • par service (axe service) ;
  • puis lorsque l'on clique sur le service, un second tableau la répartition des vacations par individu (axe contact).

À chaque tableau de synthèse, le jeu de données correspondant est exportable HTML ou CSV ainsi que le tableau de synthèse.

liste de vacations indiquant le service et la personne

Illico, en résumé

fonctionnalités utilisateur

  • import CSV : UTF-8 ou ISO-8859-1 ;
  • export CSV : UTF-8 (+ BOM) ;
  • import/export par copier-coller ;
  • possibilité d'annuler la dernière transformation ;
  • journal de bord intégré (qui indique aussi les actions annulées) ;
  • plus de 100 transformations de données :
    • analyser : formats de données, tri à plat ;
    • croiser, enrichir ou exclure depuis deux sources ;
    • modifier en masse ou selon des conditions ;
    • opérations sur des listes (plusieurs valeurs dans une même cellule/case) ;
    • convertir des formats ;
    • rapprocher : accents, suppression des "blancs" (trim), distance d'édition ;
    • filtrer, dédoublonner, échantillonner ;
    • agréger, explorer : tableaux croisés dynamiques ;
    • pivoter, transposer ;
    • et bien d'autres !

code source

  • environ 10 000 lignes de LOC strictes (HTML/JS) ;
  • code-source JS principal = 1/3 de commentaires, 2/3 d'instructions ;
  • environ 280 fonctions JS ;
  • 0 dépendance/bibliothèque/code-tiers ;
  • le code est vérifié sous JSHint.

à propos du code-source JS

  • rares dépendances entre les fonctions (limite les effets de bord) ;
  • la quasi-totalité des algorithmes sont basés sur des parcours de tableaux ;
  • le code-source JS suit une convention de nommage des variables en fonction de leur usage (i j k pour un compteur, v pour une valeur du tableau de données (String), t pour un texte plutôt long, n pour un nombre, e pour un élément HTML, a pour un array, etc.).
// quand on lit
a[i] // a représente un array simple (i est un numérique)
// quand on lit
a[v] // a représente un array associatif (v est une chaîne).

Ce qui permet à la lecture de toujours savoir sur quel type d'objet on est.

Et les variables les moins utilisées ont des noms plus explicites.

Les algorithmes assez courts + la convention de nommage + des fonctions cloisonnées permettent de visualiser les 3/4 des fonctions dans la hauteur de l'écran sans scroller (40 LOC pour un 15").

Nota bene : les revues de code sont l'occasion soit de clarifier la convention soit de rectifier les noms des variables dans le code source respecter au mieux la convention.

La convention est indiquée dans la rubrique architecture de la documentation.

Cas concrets d'utilisation

tableaux croisés dynamiques

Un logiciel métier RH (ressources humaines) exporte un listing des situations des agents mais d'une façon qui ne permet pas d'utiliser des tableaux croisés dynamiques ;
Illico permet de basculer des colonnes, des groupes de colonnes en autant de lignes (pivot) pour se retrouver sur un format plus facile à utiliser.

données d'annuaire

Un export d'un annuaire fournit des coordonnées sous la forme

Mr X  | téléphone : 0123456789, fax : 032165478
Mme Y | email : yy@abc.com, téléphone : 0546789123

Illico permet, en une opération, de transformer les coordonnées en trois colonnes : téléphone, fax, email, quelque soit l'ordre des informations qui y figuraient.

 normalisation

Pour préparer une base de données relationnelles, on a au départ un grand fichier de données et il faut créer les identifiants (clé primaire/étrangère) pour les relations entre les deux tables. Illico va normaliser (normalisation Merise) les données et préparer un identifiant).

En une opération, Illico remplace les valeurs par les identifiants et affiche la table de correspondance.

vérifier des données avant de les charger en base

Avant de charger un csv dans une base de données, on cherche souvent à vérifier la longueur des champs, si les valeurs sont uniques, si le type alpha ou numérique est bien respecté, les valeurs minimum et maximum pour des numériques, etc. Illico permet de vérifier cela en un seul clic.

Une autre fonctionnalité supprime les lignes qui ne contiennent aucune valeur pour certaines colonnes. Cela évite de charger des données en base de données et d'avoir des rejets lors de l'import ou plus exactement, cela permet de détecter en amont de l'import toutes les lignes qui vont être rejetées.

préparer des jointures

Lors d'une jointure (croisement) entre deux sources de données A et B par exemple deux tables d'une base de données relationnelle, il est difficile de connaître rapidement les données de A qui ne sont pas dans B et en même temps celles de B qui ne sont pas dans A.

À partir de deux fichiers CSV (A et B), Illico produit un tableau de synthèse avec ces informations et permet de choisir la jointure que l'on souhaite réaliser.

Cela permet aussi de détecter avant la jointure les cardinalités entre les deux sources. Par exemple on s'attend à trouver uniquement du 1-1 entre deux sources. Et quand on simule, on observe avec la simulation du 1-0 (des valeurs de A sont absentes de B), du 1-1 (des valeurs de A se retrouvent dans B) et du 1-n (des valeurs de A se retrouvent à plusieurs reprises dans B).

préparer des données multi-lignes

Pour constituer un annuaire agréable à consulter, on peut partir d'une liste d'individus avec en colonne : le nom, le prénom, la fonction, les coordonnées et l'email et d'autres données.

Pour des raisons esthétiques, on souhaite présenter les données autrement avec, pour une même ligne du tableau, regrouper dans la même cellule/case du tableau les informations suivantes

NOM Prénom
fonction (en rouge)
coordonnées
email (lien cliquable)

NOM Prénom
fonction (en rouge)
coordonnées
email (lien cliquable)

Comme Illico repose sur HTML/JS, il est facile d'intégrer des balises HTML de mise en forme (couleur, gras, a/href) et un saut de ligne BR et de les récupérer par copier-coller vers un tableur ou un traitement de texte.

Ici, il y a trois étapes :

  1. la couleur ;
  2. la balise a/href pour l'email ;
  3. la concaténation de 5 colonnes.

Nota bene : des transformations sont disponibles pour le gras, l'italique, le barré, augmenter/diminuer la taille, mettre en couleur, ou enlever la mise en forme. Des options permettent à tout moment d'interpréter ou au contraire de rendre apparente/visible ces balises/mises en forme HTML sans les interpréter.

Lire les commentaires

par Arnaud, ZeroHeure, Nils Ratusznik, Nÿco, Davy Defaud, Benoît Sibaud, Xavier Teyssier, Anonyme, palm123

DLFP - Dépêches

LinuxFr.org

QEMU 10.0

 -  7 mai - 

Comme tous les ans, Qemu sort une nouvelle version majeure. Le numéro n'implique donc pas de grands bouleversements. Il s'agit plutôt d'une base (...)


Kivy : un cadriciel graphique unique en Python

 -  6 mai - 

Kivy est un cadriciel (framework) graphique, permettant de développer des interfaces tactiles (ou utilisable à la souris) sur toutes les (...)


Lettre d’information XMPP de février 2025

 -  2 mai - 

N. D. T. — Ceci est une traduction de la lettre d’information publiée régulièrement par l’équipe de communication de la XSF, essayant de conserver les (...)


WoPiX, un serveur WOPI libre, indépendant, simple et léger

 -  28 avril - 

Un serveur WOPI (Web application Open Platform Interface) permet à un logiciel client de modifier un fichier stocké sur un serveur. C'est la couche (...)


Le Musée Replay en danger : appel à soutien pour préserver notre patrimoine informatique

 -  28 avril - 

Le Musée Replay (sur Bordeaux) œuvre pour la préservation du patrimoine informatique et vidéoludique. En juin, il perd son espace de stockage, ce qui (...)