데이터 재구성 - 구현
이것은 VSeed에서 가장 흥미롭고 핵심적인 모듈입니다. 복잡해 보이지만 실제로는 매우 단순하고 정교하며, 코드도 200줄이 채 되지 않습니다.
foldMeasures와 unfoldDimensions를 잘 활용하면 임의의 지표와 차원을 고정된 지표와 차원으로 변환할 수 있고, 충분히 자유로운 시각화 매핑을 구현할 수 있습니다.
foldMeasures
foldMeasures는 모든 지표를 하나의 지표로 fold하고, 지표 이름 차원과 지표 Id 차원을 추가합니다. 이 과정에서 손실될 수 있는 모든 정보는 foldInfo에 저장되며, 동시에 데이터 통계도 수행할 수 있습니다.
특징
- 특징 1:
foldMeasures실행 후에는 반드시 지표 필드가 1개만 남습니다. 즉 여러 지표로 설명된 데이터를 모두 하나의 지표로 변환할 수 있고, 임의의 다중 지표 데이터를 하나의 그래픽 요소에 대응시킬 수 있습니다. - 특징 2: 데이터 항목과 그래픽 요소(기하 요소)의 데이터가 엄격하게 일치합니다. 하나의 데이터는 하나의 그래픽 요소에 대응합니다.
- 특징 3: 이 과정에서 데이터 통계를 수행합니다.
1개 지표와0개 차원은foldMeasures후1개 지표와2개 차원(지표 이름과 지표 Id 포함)을 얻을 수 있습니다.4개 지표와1개 차원은2번의foldMeasures후2개 지표와3개 차원(지표 이름과 지표 Id 포함)을 얻을 수 있어, 이중 축 차트 같은 시나리오를 완벽하게 지원할 수 있습니다.N개 지표와0개 차원은Y(Y ≤ N)번의foldMeasures후Y개 지표와2개 차원(지표 이름과 지표 Id 포함)을 얻을 수 있습니다.
최소 실행 가능 예제
unfoldDimensions
unfoldDimensions는 정보를 잃지 않는 전제에서 임의의 차원을 하나의 새로운 차원으로 concat합니다. 추가되는 모든 정보는 unfoldInfo에 저장됩니다.
완전한 unfoldDimensions == 모든 차원 값을 지표로 변환 + 한 번의 foldMeasures
하지만 dataset을 순회하는 비용은 큽니다. 불필요한 foldMeasures를 한 번 더 수행하면 성능이 저하됩니다.
foldMeasures는 하나의 데이터에 지표가 하나만 존재함을 직접 보장할 수 있습니다. 따라서 원본 데이터에서 단순한 병합만 수행해도 같은 효과를 정교하게 달성할 수 있고, 최종적으로 성능을 크게 향상시킬 수 있습니다.
검토해 보면, 이론적으로 unfoldDimensions는 foldMeasures와 완전히 합쳐져 한 번의 dataset 순회 안에서 모든 데이터 처리를 완료할 수 있습니다. 하지만 가독성과 유지보수성을 위해, 성능 병목이 없는 상황에서는 임시로 두 기능을 합치지 않습니다.
특징
특징 1: unfoldDimensions 실행 후에는 반드시 지표 필드가 1개만 남습니다.
특징 2: 원본 데이터를 잃지 않고 차원을 병합할 수 있습니다.
foldMeasures이후에 수행하기만 하면 가장 단순한concat작업으로 차원 펼침과 지표 병합을 완료할 수 있어 성능이 매우 뛰어납니다.- 임의의 차원을 완전히 새로운 차원 필드로 병합할 수 있어, 임의의 시각 채널 매핑을 구현할 수 있습니다.
- 자체적으로 복잡하지 않기 때문에, 이론적으로는
foldMeasures와 합쳐 순회 횟수를 줄이고 성능을 높일 수 있습니다.