Datenumformung - Implementierung
Dies ist eines der interessantesten und zugleich zentralsten Module von VSeed. Es wirkt komplex, ist tatsächlich aber sehr einfach und raffiniert und umfasst weniger als 200 Zeilen Code.
Wenn foldMeasures und unfoldDimensions sinnvoll eingesetzt werden, lassen sich beliebige Measures und Dimensions in feste Measures und Dimensions umwandeln. Dadurch wird eine ausreichend flexible visuelle Zuordnung möglich.
foldMeasures
foldMeasures foldet alle Measures zu einem Measure, ergänzt eine Measure-Name-Dimension und eine Measure-Id-Dimension. Alle potenziell verlorenen Informationen werden in foldInfo gespeichert; außerdem können während dieses Prozesses Datenstatistiken berechnet werden.
Eigenschaften
- Eigenschaft 1: Nach der Ausführung von
foldMeasuresgibt es garantiert nur noch 1 Measure-Feld. Das bedeutet, dass Daten mit mehreren Measures in 1 Measure umgewandelt werden können und beliebige Mehr-Measure-Daten genau einem grafischen Element zugeordnet werden. - Eigenschaft 2: Dateneintrag und Daten des grafischen Elements (geometrischen Elements) stimmen strikt überein. Ein Dateneintrag entspricht einem grafischen Element.
- Eigenschaft 3: Während dieses Prozesses werden Datenstatistiken berechnet.
1Measure und0Dimensions ergeben nachfoldMeasures1Measure und2Dimensions (einschließlich Measure-Name und Measure-Id).4Measures und1Dimension ergeben nach2Durchläufen vonfoldMeasures2Measures und3Dimensions (einschließlich Measure-Name und Measure-Id), wodurch Szenarien wie Dual-Axis-Charts sauber unterstützt werden.NMeasures und0Dimensions ergeben nachY(Y ≤ N) Durchläufen vonfoldMeasuresYMeasures und2Dimensions (einschließlich Measure-Name und Measure-Id).
Minimal lauffähiges Beispiel
unfoldDimensions
unfoldDimensions concateniert beliebige Dimensions verlustfrei zu einer neuen Dimension. Alle zusätzlich entstehenden Informationen werden in unfoldInfo gespeichert.
Ein vollständiges unfoldDimensions == alle Dimension-Werte in Measures umwandeln + ein foldMeasures-Durchlauf
Das Iterieren über das dataset ist jedoch teuer. Ein zusätzlicher foldMeasures-Durchlauf würde die Performance verschlechtern.
foldMeasures kann direkt sicherstellen, dass ein Dateneintrag nur ein Measure enthält. Daher lässt sich bereits auf den Quelldaten eine einfache Zusammenführung durchführen, die denselben Effekt elegant erreicht und die Performance am Ende deutlich verbessert.
Nach weiterer Überlegung könnten unfoldDimensions und foldMeasures theoretisch vollständig zusammengeführt werden, sodass die gesamte Datenverarbeitung in einem einzigen dataset-Durchlauf abgeschlossen wird. Aus Gründen der Lesbarkeit und Wartbarkeit werden sie ohne Performance-Engpass vorerst nicht zusammengeführt.
Eigenschaften
Eigenschaft 1: Nach der Ausführung von unfoldDimensions gibt es garantiert nur noch 1 Measure-Feld.
Eigenschaft 2: Dimensions können zusammengeführt werden, ohne die ursprünglichen Daten zu verlieren.
- Wenn der Schritt nach
foldMeasureserfolgt, reichen einfacheconcat-Operationen aus, um Dimensions zu entfalten und Measures zusammenzuführen. Die Performance ist dadurch sehr gut. - Beliebige Dimensions können zu einem komplett neuen Dimension-Feld zusammengeführt werden, wodurch beliebige Zuordnungen zu visuellen Kanälen möglich werden.
- Da der Prozess selbst nicht komplex ist, kann er theoretisch mit
foldMeasureszusammengeführt werden, um Durchläufe zu reduzieren und die Performance zu verbessern.