在dc.js+;交叉滤波器

在dc.js+;交叉滤波器,dc.js,crossfilter,Dc.js,Crossfilter,我遇到了一个涉及dc.js和crossfilter的独特问题。我有一些数据需要使用dc.js提供的数字图表来显示。然而,我发现数字图表的文档很少,因此发布了我的查询 我主要想在框1中显示唯一的项目计数,在本例中为3,在框2中为11,屏幕故障率为2/15*100,即15.3% 目前,我已经使用jquery实现了这一点,但这只是一个小技巧。我希望这些数字图表基于交叉表聚合,这样我就可以深入研究数据 我曾经遇到过计算计数的缩减示例,但它们是用于条形图,但在数字图表中,我们需要一个用于显示数据的值访问

我遇到了一个涉及dc.js和crossfilter的独特问题。我有一些数据需要使用dc.js提供的数字图表来显示。然而,我发现数字图表的文档很少,因此发布了我的查询

我主要想在框1中显示唯一的项目计数,在本例中为3,在框2中为11,屏幕故障率为2/15*100,即15.3%

目前,我已经使用jquery实现了这一点,但这只是一个小技巧。我希望这些数字图表基于交叉表聚合,这样我就可以深入研究数据

我曾经遇到过计算计数的缩减示例,但它们是用于条形图,但在数字图表中,我们需要一个用于显示数据的值访问器

有人能帮我吗?

PS: 下面是我编写的jquery代码。我不知道这是否有帮助

$(document).ready(function() {
    var baseURL = window.location.origin;

    $.ajax({
        url : baseURL + '/api/PlaceTable',
        type : 'GET',
        data : {},
        async : true,
        dataType : "json",
        success : function(response) {


            //Project Count
            var projectIdCount = [];
            for (i = 0; i < response.length; i++) {
                if(response[i].Project != undefined){
                    if($.inArray(response[i].Project, projectIdCount) === -1){
                        projectIdCount.push(response[i].Project);
                    }                    
                }
            }
            $('#number-box1').text(ProjectIdCount.length);


            //Place Count
            var placeIdCount = [];
            for (i = 0; i < response.length; i++) {
                if(response[i].Place != undefined){
                    if($.inArray(response[i].Place, placeIdCount) === -1){
                        placeIdCount.push(response[i].Place);
                    }                    
                }
            }

失败百分比的计算是一个单独的问题,我想你已经在别处问过了。要获得唯一计数,很容易创建一个“假groupAll”,它在其value方法中返回唯一键的数量

我们还需要过滤掉空箱子,因为crossfilter不会自动过滤

function bin_counter(group) {
    return {
        value: function() {
            return group.all().filter(function(kv) {
               return kv.value > 0;
            }).length;
        }
    };
}

var projectGroup = project.group();

projectCount
    .valueAccessor(function(x){ return x;})
    .group(bin_counter(projectGroup));
此处更新了fiddle,仍然忽略故障%part:

fiddle更新了群组,戈登,谢谢你的帮助。这些图表很有用。但它们不是动态的。我在这里更新了小提琴。如您所见,我创建的标志号图表是动态的,并且在选中行图表时更新其值。想知道为什么地点和项目计数图表不是这样。另外,基于百分比的数字图表,我无法使用ReduceTio实现它,可能是因为我对它不太熟悉。有什么建议吗?另一个小链接,以防万一,请让我们一次回答一个问题;这样对以后的读者会更有帮助。他们没有更新的原因是crossfilter不会自动删除空组。我正在编辑我的答案来处理这个问题。看起来不错。我发现使用Crossfilter时,有必要花大量的时间在console.log和console.table上,以了解它不过滤空组这一事实。关于Reductio,如果你想使用它,你可以用一个值定义一个维度,然后使用exceptionCount,但是我认为@Gordon解释的方式更好,因为你真正想要的是计算组数组的长度。不知何故,我无法将我的思想集中在一些关键概念上,因为我完全依赖于基于工具的BI。但这是有道理的。同样对于复杂的群和数学函数,reductio会更好,所以我最好开始。我可能会开始为reductio制作教程。谢谢戈登和伊森
function bin_counter(group) {
    return {
        value: function() {
            return group.all().filter(function(kv) {
               return kv.value > 0;
            }).length;
        }
    };
}

var projectGroup = project.group();

projectCount
    .valueAccessor(function(x){ return x;})
    .group(bin_counter(projectGroup));