Oui, Illico !

Posté par . Édité par ZeroHeure, Nils Ratusznik, Nÿco, Davy Defaud, Xavier Teyssier, Benoît Sibaud, Anonyme et palm123. Modéré par ZeroHeure. Licence CC by-sa
Tags :
36
10
avr.
2017
JavaScript

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.

  • # Conversion données -> CSV

    Posté par . Évalué à 2.

    Pour la conversion des données en CSV, avant traitement avec Illico, il peut être utile d'utiliser Pentaho Kettle.

    Bon ok, ça fait un peu usine à gaz juste pour convertir.
    Il y a aussi quelques fonctions redondantes avec Illico.

  • # Wow

    Posté par . Évalué à 6.

    Merci pour ce genre d'outil qui me sert trés régulièrement.
    Je ne pense pas forcément à oublier les scripts / routines, mais illico va me permettre de travailler mon approche avant de formaliser tout ca :)

  • # OpenRefine

    Posté par . Évalué à 3.

    Si je comprend bien c'est un concurrent d'open refine

    Quelqu'un sait comment se compare l'un à l'autre ?

    • [^] # Re: OpenRefine

      Posté par (page perso) . Évalué à 4. Dernière modification le 12/04/17 à 07:39.

      Refine est scriptable, permet de visualiser des données, et de les enrichir.

      Là, c'est du nettoyage et mise en forme rapide sans prise de tête.

      Le public n'est pas le même. Pour mes utilisateurs lambda, qui ne veulent pas se lancer dans le code, c'est assez top. Il complète très bien le panel de tools.

      Après R ou Refine sont vraiment plus puissants (mais nécessitent un investissement personnel).

      J'aimais beaucoup cet outil gratuit, qui fonctionne aussi dans le navigateur :

      http://vis.stanford.edu/wrangler/app/

    • [^] # Re: OpenRefine

      Posté par . Évalué à 2.

      Pour moi c'est complémentaire.

      OpenRefine permet de traiter de grosse quantité de données.
      Et surtout de persister les transformations — filtre, modification d'une colonne, création d'une colonne à partir d'autres — pour les ré-appliquer quand les données sont changent.

      Par contre, à ma connaissance, OpenRefine ne permet pas de faire des transformations de type agrégation, illico le perment.

      • [^] # Re: OpenRefine

        Posté par . Évalué à 1.

        Effectivement, rejouer un scénario n'est pas possible en 1 clic dans Illico.

        Selon votre profil/besoin, voici deux options possibles :

        1. dans Illico, l'historisation des actions

        Le journal de bord recense les actions réalisées et les résultats obtenus : nouveaux nombres de lignes/colonnes, nombre de valeurs modifiées, etc.

        L'objectif de l'historisation est de permettre à l'utilisateur de maîtriser le sens d'un scénario et au besoin de l'adapter sur des données légèrement différentes (une nouvelle colonne, l'ordre ou les noms des colonnes diffèrent, un format de donnée modifié).

        2. pour des utilisateurs plus techniques

        Selenium IDE est utilisé pour automatiser des tests de non-régression sur Illico (enregistrer puis rejouer un scénario) :

        • réglage des préférences utilisateur,
        • imports,
        • traitements,
        • exports1.

        http://docs.seleniumhq.org/projects/ide/


        1. le renommage des exports CSV s'active dans Illico via les préférences -> export CSV 

      • [^] # Re: OpenRefine

        Posté par (page perso) . Évalué à 0. Dernière modification le 16/04/17 à 09:29.

        Par contre, à ma connaissance, OpenRefine ne permet pas de faire des transformations de type agrégation, illico le perment.

        Euh… Je ne vois pas ce à quoi tu te réfères pour les agrégations sous Refine.
        C'est tout à fait possible.

        Agréger le contenu de cellules :

        cells["Colonne A"].value+"---"+cells["Colonne B"].value

        Pour agréger des contenus de plusieurs projets, on peut le faire en GREL, mais sinon, il y a un plugin très cool qui s'appelle VIB-BITS, et qui permet en deux clics de faire des miracles : vib-bits plugin.

        https://www.bits.vib.be/software-overview/openrefine

        Tu choisis ta colonne pivot, et tu récupères les colonnes correspondantes dans un autre projet refine.

        J'ai écrit une petite doc sur refine : https://github.com/hpiedcoq/Documentation
        (c'était avant de passer à R).

        Refine te permet même de faire du scraping simple. comme cet exemple pour parser societe.com:
        https://github.com/hpiedcoq/Refine_RCS

        Mais j'aime beaucoup le concept d'Illico. J'ai fait passer le lien à des collègues pour le tester.

        • [^] # Re: OpenRefine

          Posté par . Évalué à 2. Dernière modification le 16/04/17 à 16:00.

          Ce que je veux dire par agrégation, c'est que Refine ne permet pas de faire des "tableaux croisés dynamiques" qui sont en fait de "sum(colA), group by colB".

          Merci pour le tuto ; je le lirai à l'occasion.

  • # Cela a l'air pas mal ...

    Posté par . Évalué à 2.

    juste une question :
    as tu une idée du volume de données maximales que tu peu traiter ?

    exemple : j'ai 12 millions de lignes a traiter et je dois faire 12 paquets de 1 millions …

    Ou la limite c'est juste la RAM dispo ?

    • [^] # [fichiers volumineux]

      Posté par . Évalué à 3.

      En réalité, il y a plusieurs limites (qui peuvent être contournées).

      limite 1 : le rendu HTML

      Un fichier volumineux sera traité relativement rapidement par le JS mais en revanche l'aperçu HTML pourra prendre plusieurs minutes.

      La solution consiste à désactiver l'aperçu HTML (par défaut : l'aperçu est automatique après chaque traitement).
      D'expérience, les fonctions d'analyse peuvent effectivement suffire à visualiser les données sur une colonne donnée (on n'a pas vraiment toujours besoin d'avoir sous les yeux toutes les lignes et toutes les colonnes).

      limite 2 : le navigateur

      Selon le réglage du navigateur, un fichier trop volumineux peut éventuellement saturer l'espace alloué par le navigateur (je ne pense pas que ce soit la RAM).
      Pour éviter un plantage, certains navigateurs demandent à l'utilisateur d'augmenter la taille (c'était le cas pour le navigateur Opera), d'autres crashent le navigateur ou plantent juste Illico (exception JS que l'on retrouve sous la console).

      Un simple réglage du navigateur pourrait suffire.

      limite 3 : la techno

      Il me semble qu'il y a une limite pour l'objet JS Blob (qui est utilisé pour l'export CSV).

      Là aussi, les navigateurs sont plus ou moins tolérants.

      et donc en pratique ?

      Les limites sont référencées ici

      http://illico.tuxfamily.org/doc/build/html/fct/principes.html#gerer-les-fichiers-volumineux

    • [^] # Re: Cela a l'air pas mal ...

      Posté par (page perso) . Évalué à 3.

      A 12M de lignes, un script en python peut s'avérer vachement pertinent.
      Perso, sur un dataset quotidien d'1M de lignes je n'ai pas trouvé mieux comme solution. (27s de traitement contre 25mn sous Refine et… Impossible sous LibreOffice). Le script m'a pris 12 lignes sales.

      Il faudrait voir tes données un peu plus en détail.

      Pour R, j'ai assisté à une conf très intéressante sur le traitement des données du RCS qui vient de passer en OpenData.
      R a les mêmes soucis de chargement en RAM des données.

      Joel Gombin de Datactivist : http://datactivi.st/ (Gloire à lui) a présenté une astuce très élégante de passage préalable des données dans MonetDBLite. (un equivalent SQLite pour MonetDB)

      Le code est là :

      www.github.com/datactivist/monet.

      • [^] # Re: Cela a l'air pas mal ...

        Posté par . Évalué à 3.

        12M de lignes, un script en python peut s'avérer vachement pertinent.
        Perso, sur un dataset quotidien d'1M de lignes je n'ai pas trouvé mieux comme solution. (27s de traitement contre 25mn sous Refine et… Impossible sous LibreOffice). Le script m'a pris 12 lignes sales.

        Merci c'est le genre d'infos que je cherchais

        (scripts python,27s) , (refine, 25mn), (LO, jamais )

        reste a tester illico, mais je prendrais aussi en compte la facilité d'utilisation
        un scripts python ne peut pas être modifié par tout le monde et nécessite un "habillage" pour certain utilisateurs

        bref après faut savoir ce que l'on veut … de la perf ou du user-friendly

        mais l'essentiel est quand même que cela fonctionne jusqu'au bout :)

        • [^] # Re: Cela a l'air pas mal ...

          Posté par . Évalué à 0.

          Juste avant de charger les données, je te conseille de modifier la configuration pour éviter un rafraîchissement automatique : configuration (en bas de la liste des transformations/traitements).

          Tu verras tout de suite si le volume de données se charge correctement.

  • # Passer d'un arbre à un tableau et réciproquement ?

    Posté par . Évalué à 1.

    Je rencontre souvent le besoin de modifier des données de type "hiérarchie" (parent - enfant). Il s'agit de passer d'un arbre à un tableau, ou d'un tableau à un arbre… je n'ai pas trouvé comment faire avec Illico, ce serait possible ?

    Par exemple j'ai essayé de créer un référentiel géographique dans une base de données en m'appuyant sur les données ouvertes de l'ONU : https://unstats.un.org/unsd/methodology/m49/overview/
    Ce référentiel est construit de telle façon que chaque ligne représente un pays avec tous ses niveaux parents sur la gauche. En cible j'imagine une table à 3 colonnes CodeParent, Code, Name.

    Je saurais me débrouiller avec un tableur mais ça prend pas mal de temps et de formules :-(

    • [^] # Re: Passer d'un arbre à un tableau et réciproquement ?

      Posté par . Évalué à 3.

      Je ne sais pas si l'astuce suivante peut répondre à tes besoins.

      1. préparation des données

      3 transformations => 3 nouvelles colonnes

      • concaténer : Global Name - Global Code => Global (monde)
      • concaténer : Region Name - Region Code => Region (continent)
      • concaténer : Sub-region Name - Sub-region Code => Sub-region (pays)

      2. analyser les données

      1 fonction d'analyse

      • explorer les données

      On choisit les axes Global / Region / Sub-region

      Titre de l'image

      À chaque clic sur une ligne, un nouveau tableau dynamique permet d'analyser l'axe suivant.

      https://lut.im/oAaaD6Li36/lPm29zL7wI3gM9N5.png

      Chaque tableau de synthèse est exportable via le bouton TAB.
      Chaque sous-tableau de données résultat1 (la succession des filtres Global / Region / Sub-region) est exportable via HTML et CSV.

      remarques

      1. ces tableaux croisés dynamiques rappellent toujours le contexte

        • distribution : ici on compte le nombre de lignes2
        • selon (X) : l'axe d'analyse
      2. si ton besoin est uniquement orienté exploration de données

        • tu peux dans ce cas masquer l'IHM (bouton "ihm" bandeau supérieur)
        • et copier-coller tous les tableaux de synthèse vers un tableur en une fois (plus rapide que de les copier un par un).

      sections de la documentation


      1. les exports des tableaux résultats contiendront toutes les colonnes du tableau original : dans cet exemple, le jeu de données a 18 colonnes. 

      2. la mention "sub-region" n'a pas de sens ici puisque l'on compte le nombre de lignes, cf. première capture d'écran (c'est noté pour correction). 

      • [^] # Re: Passer d'un arbre à un tableau et réciproquement ?

        Posté par . Évalué à 1.

        Merci beaucoup pour ta réponse détaillée. Je pense comprendre l'astuce, et effectivement elle peut permettre de simplifier le genre de tâches que j'imagine… au prix de multiples tableaux intermédiaires.

        J'ai trouvé un article qui explique comment approcher un tel problème : http://www.daxpatterns.com/parent-child-hierarchies/ (à l'aide d'Excel et d'une extension)

        Mais dans l'idée la colonne Chemin peut aussi être générée avec une bonne grosse formule.
        Peut-être pour une prochaine version ? :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.