首页 > 解决方案 > Basic dc.js dataTable 显示错误数据

问题描述

我在 dc.js 中有一个基本的数据表。我试图让它显示数据中所有值的列表。但相反,它显示了一个子集。在这里非常简化的小提琴:https ://jsfiddle.net/dhbrt0om/1/

let ndx = crossfilter(data);
let chart = dc.dataTable("#tableExample");
let data_examplefield = ndx.dimension(function(d) {
    return d.examplefield;
});

chart
  .columns([
    function(d) {
      return d.examplefield;
    },
  ])
  .dimension(data_examplefield)

dc.renderAll();

(小提琴中的完整数据)

我已将 dataTable 维度设置为相关字段。并且列函数应该返回字段值。但它只显示了 5 个可能的值。在 .columns 函数中使用断点单步执行代码,我可以看到它返回了 20 个值 - 但不是来自正确的 20 个字段。

我可以看到,如果我将 data_examplefield 更改为:

let data_examplefield = ndx.dimension(function(d) {
    return d.examplefield ? d.examplefield : 'none';
});

这有助于返回值……但为什么呢?为什么不存在“无”?

我显然误解了一些基本的东西,并假设我会踢自己,但我就是看不到。任何帮助表示赞赏。

标签: dc.jscrossfilter

解决方案


啊,我明白这是因为每个字段都需要有一个值。它实际上列在 crossfilter gotchas wiki 中:https ://github.com/crossfilter/crossfilter/wiki/Crossfilter-Gotchas

如果键函数为单行返回未定义,例如由于缺少字段,这可能会破坏整个索引。


推荐阅读