decoder-leco / poc-data-visualization

Un POC de visualisation de données: MongoDB, PostGreSQL, Jupyter notebook, Astro
0 stars 1 forks source link

NE PAS trouver un inspecteur de données pour les notebooks R Jupyter #18

Closed Jean-Baptiste-Lasselle closed 6 months ago

Jean-Baptiste-Lasselle commented 6 months ago

Ce que @JeanGarf et @decoderleco utilisaient jusqu'ici pour tester leur données, après chaque transformation

Grâce à une discussion avec @JeanGarf le samedi après midi, j'ai compris comment Pierre et lui-même travaillaient jusque là.

Donc les données en R sont chargées en RAM dans les variables. Je pense que chaque variable est un dataframe

À chaque nouvelle transformation effectuée sur les données, pour vérifier que le résultat de la transformation était ce qui'ls souhaitaient, Pierre et JeanGarf utilisaient un plugin de leur IDE (Rstudio pour @decoderleco et Eclipse StatEt pour JeanGarf, afin de faire la chose suivante:

Et ds eclipse et R Studio ils ont un inspecteur de données qui permet de voir dans une variable:

Nous n'allons plus exécuter de tests manuels de cette sorte, à la place, nous allons écrire des tests:

Note importante: rôle des notebooks

les notebooks servent donc :

Le pourquoi du comment

Mon analyse dans le notebook ./notebooks/RefonteArchitecture_IngestionEurostatData.ipynb, a permis:

Pour toutes ces raisons, mon analyse montre:

De L'"Incident de L'interview Italienne"

Il est très important de débriefer avec @decoderleco ce qui s'y est produit dans la prochaine réunion, ce qui permettra de dégager une première roadmap ou de vraies tâches très concrètes à réaliser vont se dégager.

Ce qui s'est produit:

On a typiquement là deux types d'erreurs qui sont 'léessence de l'émergence des méthodes dites de "data engineering":

des méthodes qui permettent de séparer la gestion de la complexité du code, de la gestiond el a complexité de la data.

Voilà ce qu'est l'essence du data engineering, une approche scientifique vieille comme le monde: lorsque l'on a un problème de complexe à résoudre, on le casse (on le décompose) en de plus petits problèmes, dont la complexité est inférieure, pour les résoudre séparément.

Jean-Baptiste-Lasselle commented 6 months ago

le plugin eclispe c'est celui-là : https://projects.eclipse.org/projects/science.statet

Jean-Baptiste-Lasselle commented 6 months ago

https://medium.com/@heshanottawa/variable-inspector-in-jupyter-notebook-or-jupyterlab-mac-os-5639f12bbfb

Jean-Baptiste-Lasselle commented 6 months ago

https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559

Jean-Baptiste-Lasselle commented 6 months ago

Je vais réfléchir à cette histoire d'inspecteur de variables R d'objets R, il y a une autre chose très importante à rediscuter derrière en fait je suis en train de le comprendre, pdt que je suis avec ma femme au tel

Oui il y a une vraie question, très, très importante, et entre autres, qui répondra à la question: dans la plateforme à quoi va servir un notebook?

Début de réponse: ce ne sont pas les notebooks qui vont faire tout le traitement de données de masse. Et ce ne sera même pas du R qui fera le traitement de données de masse.

Jean-Baptiste-Lasselle commented 6 months ago

Cette tâche est conservée pour archives, la tâche a été annulée, l'explication est largement donnée dans la description

JeanGarf commented 6 months ago

Bonsoir @Jean-Baptiste-Lasselle ,

Je suis globalement d'accord avec ce que tu indiques, même si je t'avoue que le style employé me donne un peu mal au ventre tant il me donne l'impression que Pierre et moi avons fait n'importe quoi.

J'apprécierais à l'avenir que notre travail soit vu comme une première version réalisée dans l'urgence et que l'on se propose d'améliorer à présent pour le rendre plus accessible, mais sans pour autant dénigrer ce qui a été fait.

Ceci étant dit, la notion d'inspection n'est à mon sens pas la même que celle de test, car ces notions interviennent dans des phases de développement distinctes :

L'inspection, au même titre qu'un debugger, est utile lors de la phase de mise au point ou de l'investigation. Par exemple, lorsque l'on doit découvrir les siouxeries présentes dans un fichier de données téléchargées ou lorsque l'on fait du reverse engineering sur du code.

Les Test Unitaires (TU) permettent d'assurer la Non Régression d'un traitement, voire de spécifier un traitement dans le cas du Test Driven Dev.

Il me semble donc qu'un outil d'inspection "user friendly" qui permet de filtrer, trier et sélectionner des colonnes, sans avoir besoin de saisir des commandes textuelles complexe est important, tout comme l'est un débugger, car cela permet de gagner du temps lors de la phase de mise au point. Mais je suis d'accord avec toi que cela ne doit pas remplacer les TU.

Concernant les erreurs rencontrées lors de "L'Incident de L'interview Italienne" : erreur no1 trouvée : les données de la source de données ont changées, une colonne de table a changé de nom erreur no2 trouvée : la fonction unnest produit désormais des doublons...

Il me semble que la première erreur qui provient d'un changement externe arrivera également sur notre plateforme lors d'une mise à jour des données. Simplement, sa correction sera centralisée au niveau de l'extraction et du coup sans impact sur les transformations, ce qui est un avantage.

Concernant la seconde erreur, nous ne l'aurons pas tant que l'on restera dans un conteneur figé (et en supposant que R/Libs fasse partie du conteneur, ce qui n'est pas le cas aujourd'hui je crois). Mais dès que l'on upgradera R et/ou que l'on ré-installera des packages, on aura les mêmes difficultés, sauf si on trouve comment figer les versions (style Maven).

A+