交叉过滤器:获取落入两列乘积的值计数



我有一个数据集,比如

  {"parent":"/home","inside":"/files","filename":"type.jar",
   "extension":"jar","type":"modified","archive"}

同样,json 数组中也有很多行。我正在使用交叉过滤器来读取数据并绘制图形和数据表。数据集中的类型具有值"已添加"、"已修改"和"已删除"。

我想创建一个数据表,例如


扩展 |已添加 |修改 |删除

添加、修改和删除的位置将保存具有特定扩展名的文件计数。谁能建议我一种方法?

到目前为止,我已经创建了一个这样的维度:

var extensionType = facts.dimension(function(d) { 
        return d.extension; });
var extensionTypeGroup=extensionType.group();

我得到这样的分组输出,

{"key":"class","value":424},
{"key":"js","value":176},
{"key":"properties","value":26},
{"key":"jar","value":10},
{"key":"css","value":8},
{"key":"txt","value":6},
{"key":"war","value":4},
{"key":"png","value":4},
{"key":"handlebars","value":4}, 
{"key":"jar_local","value":2},
{"key":"aar","value":2}

如何获取已添加的已删除和修改的单独计数?

可能最简单的方法是简化为对象而不是单个值。

常见问题解答中对此进行了介绍:如何一次减少多个值?如果行包含单个值,但每行包含不同的值,该怎么办?您可能只需要正确的搜索词即可找到它。

实际上,看起来FAQ中的代码将未经修改地为您工作:

var extensionTypeGroup = extensionType.group().reduce(
    function(p, v) { // add
        p[v.type] = (p[v.type] || 0) + v.value;
        return p;
    },
    function(p, v) { // remove
        p[v.type] -= v.value;
        return p;
    },
    function() { // initial
        return {};
    });

最新更新