按维度过滤的dataCount图表

时间:2015-05-07 10:59:23

标签: dc.js

我有各种活动的参与者列表作为数据源

public

... 默认情况下,dataCount会说他们是3个参与者,我需要显示事件的数量(所以2)

我尝试创建维度

eventid,participant_name
42,xavier
42,gordon
11,john

但无法在dataCount中使用它

var event = ndx.dimension(function(d) {
  return d.eventid;
})

我该怎么做?

1 个答案:

答案 0 :(得分:1)

听起来我正在尝试使用数据计数小部件来计算组箱而不是行。

数据计数窗口小部件仅用于计算记录,而不是键或组或其他任何内容。但是你可以伪造这些对象,因为小部件只在维度上调用.size(),而在组上只调用.value()

但是放在那里呢?该值实际上很容易,因为它是具有非零值的组的计数:

var eventGroup = event.group();
widget.group({value: function() {
    return eventGroup.all().filter(function(kv) { return kv.value>0; }).length;
})

但是大小是多少?好吧,根据crossfilter文档,group.size实际上返回了我们想要的内容,“组中不同值的数量,独立于任何过滤器;基数。”

奇怪的是,这似乎是

widget.dimension(eventGroup)

应该有效。当然,我还没有测试过这个,所以如果这不起作用,请评论!

(叹气,我不会为dc.js中的真实数据模型做些什么。这个小部件的“维度”实际上是交叉过滤器对象,这是相当令人困惑的。另一个地方有一种奇怪的经济方法,比如维度的组,它只是一个函数。)