我对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条记录中的所有部门,甚至是那些不在当前过滤结果中的部门。
如何从给定维度获取与现有过滤器相关的唯一值列表?
此外,如果有人知道如何按照部门维度的组/唯一值的顺序迭代结果,那么这也会有所帮助。
答案 0 :(得分:2)
如果您不想要,我建议过滤掉零值组:
deptDimension.group().all()
.filter(function(d) { return d.value; })
.forEach(function(d) { ...
您的示例的更新版本(还修复了其他一些内容):https://jsfiddle.net/8g04rzuf/