Javascript/Google Charts |数据表信息的复杂分组(这可能吗?



我有大量数据动态加载到数据表中。我希望做几个分组过滤器来减少数据。这里有一个小例子...

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,计算每个问题的"是"和"否"回答的数量,并将结果发布在自己的列中。

cols: 0 = marketId, 1 = 市场上的商店数量, 2 = 问题 1(是的数目), 3 = 问题 1(否的数目), 4 = 问题 2(是的数目), 5 = 问题 2(否的数目),

..., n-1 = 问题N(是的数目), n = 问题N(是的数目)
行 = 调查摘要

市场1 | 3 | 2 | 1 | 1

| 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);

最新更新