2014-11-11 5 views
0

crossfilter.js 라이브러리를 사용하여 시각화 작업을하고 있는데, 데이터 세트에서 중첩 된 특성의 치수를 만드는 방법에 대해 약간 혼란 스럽습니다. 예를 들어, 데이터 세트의 각 인스턴스가 여러 날짜는 다음과 같습니다 데이터 구조의 결과로, 그와 관련된했습니다Crossfilter.js : 중첩 된 특성이있는 차원/그룹 만들기

[ { name: 'instance_name', 
    dates: ['2014-11-11', '2013-07-06', '2011-02-04'], 
    category: 'category 1' }, 
{ name: 'instance_name2', 
    dates: ['2012-01-01', '2013-03-07'], 
    category: 'category 2' } ] 
을 기준으로 필터링 수 있도록 크기를 만들 수 있도록 내가 좋아하는 것

, 예를 들어, 날짜와 카테고리 및 치수는 교차 필터를 사용하여 직접 수행 할 수 있습니다. 그러나 날짜를 파싱하는 방법을 모르겠습니다. 내가 좋아하는 뭔가를 사용하여 날짜 치수를 만드는 첫 번째 시도했다 :

var cf = crossfilter(data); 
var dateDim = cf.dimension(function(d) { return d.dates; }); 

을 다음 .map() 방법과 같이 사용하여 변수처럼 날짜를 저장하려고 : 위의 단지 검색 않습니다

var date = dateDim.top(Infinity).map(function(d) { return d.dates; }); 

날짜를 저장하고 변수로 저장하지만 (a) 이것은 각각 문자열의 날짜 배열입니다. (b) 다른 크로스 필터 치수에 dateDim을 연결하는 데 더 가까이 접근하지 않습니다. 시각화를 위해 만듭니다. 어떤 도움이라도 대단히 감사하겠습니다. 읽어 주셔서 감사합니다.

답변

0

Crossfilter에로드하기 전에 구조를 평평하게 만드는 것이 좋습니다. 따라서 첫 번째 레코드는 3 개의 레코드 (각 날짜마다 1 개)가되고 두 ​​번째 레코드는 두 개의 레코드가됩니다. 그런 다음 날짜를 구문 분석하고 Crossfilter에서 차원을 지나치게 문제없이 처리 할 수 ​​있습니다. 단점은 문제이기 때문에 계산하는 것입니다. 그러나 이는 맞춤 그룹화 기능으로 관리 할 수 ​​있습니다.

+0

여기에 계산 문제를 완화시키는 맞춤 그룹 기능이 있습니까? –

+0

그룹에서 보는 각 고유 키 (이 경우 '이름'필드) 중 첫 번째 키만 계산하는 그룹입니다. Reductio의 예외 집계는 혼동을 일으킬 지 모르지만 혼란 스럽지만 다음과 같습니다. https://github.com/esjewett/reductio#aggregations-standard-aggregations-exception-aggregation –

+0

이 코드는 정확하다고 표시되었지만 더 이상 최적이 아닙니다. -) CrossFilter 1.4.0 alphas에서 차원 배열을 사용하여 병합하지 않고 처리 할 수 ​​있습니다. –