Google visualization 创建聚合函数以报告Google DataTable中最流行的数据
我有一个谷歌数据表,它看起来像这样: var data=new google.visualization.DataTable; data.addColumn'string','City'; data.addColumn'string','Model'; 数据。添加列“编号”、“售出”; data.addRows[ [墨尔本,福特,10], [Perth,Ford,2], [墨尔本,福特,7], [墨尔本,霍尔顿,25], [Perth,Holden,25], [墨尔本,霍尔顿,12], [墨尔本,福特,11] ]; 我想做的是按城市分组,并报告该城市具有最高累计销售价值的模型 返回的结果将是: 城市模型 墨尔本霍尔顿酒店 珀斯福特 从我对Google Visualization API的阅读来看,可以编写自定义聚合函数,但这超出了我有限的经验Google visualization 创建聚合函数以报告Google DataTable中最流行的数据,google-visualization,Google Visualization,我有一个谷歌数据表,它看起来像这样: var data=new google.visualization.DataTable; data.addColumn'string','City'; data.addColumn'string','Model'; 数据。添加列“编号”、“售出”; data.addRows[ [墨尔本,福特,10], [Perth,Ford,2], [墨尔本,福特,7], [墨尔本,霍尔顿,25], [Perth,Holden,25], [墨尔本,霍尔顿,12], [墨尔本
任何帮助都将不胜感激。这需要双重分组:第一次获得每个城市每种车型的总销量,第二次获得最受欢迎的车型
var g1 = google.visualization.data.group(data, [0, 1], [{
type: 'number',
label: 'Total Sold',
column: 2,
aggregation: google.visualization.data.sum
}]);
// create a view to merge columns 1 and 2 together for the grouping below
var view = new google.visualization.DataView(g1);
view.setColumns([0, {
type: 'string',
label: 'Model QTy Sold',
calc: function (dt, row) {
var o = {model: dt.getValue(row, 1), sold: dt.getValue(row, 2)};
return JSON.stringify(o);
}
}]);
var g2 = google.visualization.data.group(data, [0], [{
type: 'string'
label: 'Most Popular'
aggregation: function (values) {
var max = null, ret = null;
for (var i = 0; i < values; i++) {
var o = JSON.parse(values[i]);
if (max == null || o.sold > max) {
max = o.sold;
ret = o.model;
}
}
return ret;
}
}]);
g2应包含按城市分组的销量最高的车型。如果两个模型之间存在关联,这将返回值数组中的第一个模型。可能值将按模型名称排序,但这不能保证。我对asgallant的第二个分组所做的编辑是:
var g2 = google.visualization.data.group(view, [0], [{
type: 'string',
label: 'Most Popular',
column: 1,
aggregation: function (values) {
var max = null, ret = null;
for (var i = 0; i < values.length; i++) {
var o = JSON.parse(values[i]);
if (max == null || o.sold > max) {
max = o.sold;
ret = o.model;
}
}
return ret;
}
}])