Remodelage des données - Implémentation
C'est l'un des modules les plus intéressants et les plus centraux de VSeed. Il paraît complexe, mais il est en réalité très simple et ingénieux, avec moins de 200 lignes de code.
En utilisant correctement foldMeasures et unfoldDimensions, il est possible de convertir n'importe quels indicateurs et dimensions en indicateurs et dimensions fixes, ce qui permet des mappings visuels très flexibles.
foldMeasures
foldMeasures effectue un fold de tous les indicateurs en un seul indicateur, puis ajoute une dimension de nom d'indicateur et une dimension d'Id d'indicateur. Toutes les informations qui pourraient être perdues sont stockées dans foldInfo, et des statistiques de données peuvent être calculées pendant ce processus.
Caractéristiques
- Caractéristique 1 : après l'exécution de
foldMeasures, il n'y a forcément qu'un seul champ d'indicateur. Les données décrites par plusieurs indicateurs peuvent donc toutes être converties en un seul indicateur, et n'importe quelles données multi-indicateurs peuvent correspondre à un seul élément graphique. - Caractéristique 2 : l'entrée de données et les données de l'élément graphique (élément géométrique) sont strictement cohérentes. Une donnée correspond à un élément graphique.
- Caractéristique 3 : ce processus effectue des statistiques sur les données.
1indicateur et0dimension permettent, aprèsfoldMeasures, d'obtenir1indicateur et2dimensions (incluant le nom d'indicateur et l'Id d'indicateur).4indicateurs et1dimension permettent, après2exécutions defoldMeasures, d'obtenir2indicateurs et3dimensions (incluant le nom d'indicateur et l'Id d'indicateur), ce qui prend parfaitement en charge des scénarios comme les graphiques à double axe.Nindicateurs et0dimension permettent, aprèsY(Y ≤ N) exécutions defoldMeasures, d'obtenirYindicateurs et2dimensions (incluant le nom d'indicateur et l'Id d'indicateur).
Exemple minimal exécutable
unfoldDimensions
unfoldDimensions effectue un concat de dimensions arbitraires vers une nouvelle dimension sans perte d'information. Toutes les informations ajoutées sont stockées dans unfoldInfo.
Un unfoldDimensions complet == conversion de toutes les valeurs de dimension en indicateurs + une exécution de foldMeasures
Mais le coût d'itération sur le dataset est très important. Une exécution supplémentaire de foldMeasures entraînerait une baisse de performance.
foldMeasures garantit directement qu'une donnée ne contient qu'un seul indicateur. Il est donc possible d'effectuer une simple fusion directement sur les données source, pour obtenir astucieusement un effet équivalent et améliorer fortement les performances au final.
Après réflexion, unfoldDimensions pourrait théoriquement être entièrement fusionné avec foldMeasures, afin de terminer tout le traitement des données en une seule itération du dataset. Toutefois, pour des raisons de lisibilité et de maintenabilité, tant qu'il n'y a pas de goulot de performance, ils ne sont provisoirement pas fusionnés.
Caractéristiques
Caractéristique 1 : après l'exécution de unfoldDimensions, il n'y a forcément qu'un seul champ d'indicateur.
Caractéristique 2 : les dimensions peuvent être fusionnées sans perdre les données d'origine.
- Tant que l'opération est effectuée après
foldMeasures, une simple opérationconcatsuffit pour déplier les dimensions et fusionner les indicateurs, avec d'excellentes performances. - N'importe quelles dimensions peuvent être fusionnées en un tout nouveau champ de dimension, ce qui permet des mappings arbitraires de canaux visuels.
- Comme le processus lui-même n'est pas complexe, il peut théoriquement être fusionné avec
foldMeasuresafin de réduire le nombre d'itérations et d'améliorer les performances.