crossfilter:获取落入两列乘积的值的计数

时间:2017-02-04 06:05:52

标签: dc.js crossfilter

我有一个像

这样的数据集
public static ModuleKey getDeployableModuleFromModulesList(List<Module> modules) {

    return findEARKey(modules.stream())
            .orElse(findWARKey(modules.stream()).orElse(null));

}

public static Optional<ModuleKey> findEARKey(Stream<Module> moduleStream){

    return  moduleStream.flatMap(e -> e.getArtifacts().stream())
            .filter(e -> e.getType().equals("ear"))
            .map(Artifact::getKey).findFirst();
}

public static Optional<ModuleKey> findWARKey(Stream<Module> moduleStream){

    return  moduleStream.flatMap(e -> e.getArtifacts().stream())
            .filter(e -> e.getType().equals("war"))
            .map(Artifact::getKey).findFirst();
}

同样很多,json数组中有很多行。我正在使用crossfilter来读取数据并绘制图形和数据表。数据集中的类型具有“已添加”,“已修改”和“已删除”的值。

我想创建一个像

这样的数据表

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

添加,修改和删除的位置将保留具有特定扩展名的文件的计数。任何人都可以建议我这样做吗?

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

Get-ChildItem -Path . -Filter *bin* –Recurse | Remove-Item -Recurse -Confirm

我得到了这样的分组输出,

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

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

1 个答案:

答案 0 :(得分:0)

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

常见问题解答中涵盖了这一点:How do I reduce multiple values at once? What if rows contain a single value but a different value per row?您可能只需要正确的搜索字词即可找到它。

实际上,看起来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 {};
    });