Google의 시각화 API를 사용하여 google.visualization.data.group을 사용하여 원시 데이터를 기반으로하는 하위 테이블을 만듭니다. 내 원시 데이터는 {v : "US", f : "United States"}의 트릭을 사용하여 값 이외의 값을 표시하지만 집계 함수를 사용하면 서식이 "US"부분 만 남기고 제거됩니다.Google 시각화 API에서 그룹화 기준 그룹화를 사용하여 유지
원래 서식을 유지할 수있는 방법이 있습니까, 아니면 그룹 집계를 사용하여 만든 DataTable에 쉽게 다시 추가 할 수 있습니까?
샘플 데이터 :
[2010, {v:"MA", f:"Morocco"}, {v:"002", f:"Africa"}, {v:"002", f:"Northern Africa"}, 21.12724],
[2010, {v:"AW", f:"Aruba"}, {v:"019", f:"Americas "}, {v:"019", f:"Caribbean"}, 0.98],
[2010, {v:"AF", f:"Afghanistan"}, {v:"142", f:"Asia"}, {v:"142", f:"Southern Asia"}, 0.9861],
[2010, {v:"AO", f:"Angola"}, {v:"002", f:"Africa"}, {v:"002", f:"Middle Africa"}, 5.11774],
집계 기능 :
var countryData = google.visualization.data.group(
rawData,
[0, 1],
[{'column': 4, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
);
편집 : 보장이 없기 때문에 더 생각에
, 그것은 형식 그룹에 아마 불가능 그 형식 각 값은 일관성이 있습니다. 이를 염두에두고, 내 데이터의 각 열에 형식을 추가하는 함수를 작성하는 것이 더 좋을 수도 있고 가능할 수도 있습니다. 따라서 질문은 "도대체 어떻게 그 일을합니까?"
필자는 원시 데이터를 포맷되지 않은 값으로 작성하지 않고 각 값의 형식을 조회하기위한 추가 테이블을 작성하지 않을 것입니다. 그러면 추가 테이블이 2 개 필요합니다 (한 행은 28 행, 한 행은 240 행). 그리고 두 개의 함수를 작성하여 그룹화 된 테이블의 각 값을 검토합니다 (30 년 이상의 데이터, 수천 라인을 의미) 값을 추가합니다.
정말 복잡한 솔루션처럼 보입니다.
수정 자 함수로이를 수행 할 수있는 방법이 있습니까? 테이블의 각 값을 {v : "US", f : "United States"} 형식의 객체로 반환하는 함수를 작성할 수 있습니까? 아니면 원래 테이블에서 적절한 값을 찾아 해당 포맷을 채택 할 수있는 컬럼 포맷터를 작성하는 쉬운 방법이 있습니까? 어느 것이 나를 위해 (누가 그것을 써야 하는가), 그리고 사용자 (누가 그것을로드해야 하는가?) 모두 최소한의 두통을 일으킬 것인가?
편집 2 :
내가 이런 걸 사용하여 새 테이블의 포맷을 만들 수있을 것 같습니다
function (dt, row) {
return {
v: (dt.getValue(row, 1)/1000000),
f: (dt.getValue(row, 1)/1000000) + 'M'
}
}
을하지만 문제는 내가 번호를 다루고 있지 않다 때문에 것이된다 형식을 사용하려면 값을 가져 와서 조회 테이블에서 조회 한 다음 적절한 형식을 반환하는 조회 테이블을 만들어야합니다. 또한 수천 줄의 줄 단위로 전체 표를 반복해야 할 것처럼 보입니다.
나는 무차별 대입 루핑과 값을 지정하지 않으면 이것을 할 수있는 쉬운 방법이 없다고 상상할 수 없다.
편집 3 :
그래서 나는 까다로운 뭔가를 시도했다. 각 행을 값/형식으로 설정하는 대신 값/형식 부분을 문자열로 만든 다음 그룹화 한 후 개체를 평가하기 위해 eval()을 사용했습니다. 이것은 훌륭하게 작동했습니다.여기[2010, "{v: 'MA', f: 'Morocco'}", 21.13],
[2010, "{v: 'AW', f: 'Aruba'}", 0.98],
[2010, "{v: 'AF', f: 'Afghanistan'}", 0.99],
[2010, "{v: 'AO', f: 'Angola'}", 5.12],
새로운 코드 : 여기서 데이터는
var countryCount = countryData.getColumnRange(0).count;
for (var i = 0; i <= countryCount; i++) {
countryData.setValue(i, 1, eval('(' + countryData.getValue(i,1) + ')'));
};
문제는 그 이것은 구글 DataTable을하기 위해서는 {V 표시 할 때 I 출력 'AE', F를 ' 제대로 평가와 결과를 확인한다는 사실에도 불구하고 아랍 에미리트는 '} 나 제공 :
>>> eval('(' + countryData.getValue(i,1) + ')')
Object v="AE" f="United Arab Emirates"
는 그래서 어떻게 내가 잘못 여기서 뭐하는 거지?