我有大量数据动态加载到数据表中。我希望做几个分组过滤器来减少数据。这里有一个小例子...
cols: 0 = marketId, 1 = storeId, 2 = question1, 3 = question2, ..., n = questionN
行 = 1 个调查
市场1 | 1234 | 是 | 否 | ... | 否
市场1 |2345 | 否 |否 |... |是
市场1 |3456 |是 |是 |... |否市场2 |4567 |否 |否 |... |是
市场2 |5678 |否 |是 |... |是
市场3 |6789 |是 |否 |... |是
我希望使用分组(我也假设一些创造性的加入)来削减这一点。我需要:
1. 计算每个唯一市场 ID 的商店 ID,并在自己的列中返回每个市场 ID 的商店总数
2. 对于每个 marketId,计算每个问题的"是"和"否"回答的数量,并将结果发布在自己的列中。
..., n-1 = 问题N(是的数目), n = 问题N(是的数目)
行 = 调查摘要
| 2 | ... | 1 | 2市场2 |2 |0 |2 |1 |1 |... |2 |0市场3 |1 |1 |0 |0 |1 |... |1 |0
我浏览了 Google 图表可视化文档,并在一些基本的分组中有点运气,但我以前从未尝试过如此复杂的东西。我想知道这种过滤量是否可行,如果是这样 - 正确方向的一点将不胜感激。
筛选和分组是两个不同的东西:筛选限制数据,分组聚合数据。 你想要的似乎是分组而不是筛选,所以这里有一些基本代码应该做你想要的:
var groupColumns = [{
// count of store ids
type: 'number',
column: 1,
label: 'Count of ' + data.getColumnLabel(1),
aggregation: google.visualization.data.count
}];
for (var i = 2, length = data.getNumberOfColumns(); i < length; i++) {
groupColumns.push({
// count of yes's in column i
type: 'number',
column: i,
label: 'Count of yes's in ' + data.getColumnLabel(1),
aggregation: function (vals) {
var cnt = 0;
for (var j = 0; j < vals.length; j++) {
if (vals[j] == 'yes') {
cnt++;
}
}
return cnt;
}
});
groupColumns.push({
// count of no's in column i
type: 'number',
column: i,
label: 'Count of no's in ' + data.getColumnLabel(1),
aggregation: function (vals) {
var cnt = 0;
for (var j = 0; j < vals.length; j++) {
if (vals[j] == 'no') {
cnt++;
}
}
return cnt;
}
});
}
var groupedData = google.visualization.data.group(data, [0], groupColumns);