使用Crossfilter获取唯一值

时间:2015-11-18 20:35:15

标签: crossfilter

我对Crossfilter很陌生,所以我很抱歉。

我正在开展一个项目,我将数据引入页面,然后允许用户使用select元素过滤数据。每个选择过滤器对应于Crossfilter维度。根据选定的过滤器,在页面中显示相应的数据。我已经正常工作,包括同时使用多个过滤器(每个过滤器可以包含多个值)。

我想要做的是显示由所选组织组织的数据。例如,如果我的数据有3列:Office,Department和Gender,则用户可以过滤Office = [New York,Atlanta]和Gender = [Female]。然后,用户可以按部门(或其他列)对结果进行分组。例如,如果根据上面列出的过滤器有100个匹配中的20个,那么这些结果可以按部门分组如下:8个营销,7个销售和5个IT。

(分组的顺序现在不相关。)

数据中还有其他部门未包含在过滤结果中(如人力资源,安全,运营等)

在代码应用过滤器并显示结果时,我似乎没有办法显示与这20个项目相关联的唯一部门值。当我做这样的事情时:

deptDimension.group().all().forEach(function(d) {

它列出了所有100条记录中的所有部门,甚至是那些不在当前过滤结果中的部门。

如何从给定维度获取与现有过滤器相关的唯一值列表?

此外,如果有人知道如何按照部门维度的组/唯一值的顺序迭代结果,那么这也会有所帮助。

1 个答案:

答案 0 :(得分:2)

如果您不想要,我建议过滤掉零值组:

deptDimension.group().all()
  .filter(function(d) { return d.value; })
  .forEach(function(d) { ...

您的示例的更新版本(还修复了其他一些内容):https://jsfiddle.net/8g04rzuf/