dc.js - 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';
});
这有助于返回值……但为什么呢?为什么不存在“无”?
我显然误解了一些基本的东西,并假设我会踢自己,但我就是看不到。任何帮助表示赞赏。
解决方案
啊,我明白这是因为每个字段都需要有一个值。它实际上列在 crossfilter gotchas wiki 中:https ://github.com/crossfilter/crossfilter/wiki/Crossfilter-Gotchas
如果键函数为单行返回未定义,例如由于缺少字段,这可能会破坏整个索引。
推荐阅读
- c++ - 是否可以通过 FILE* 使用 C 库函数打开 Qt 资源?
- javascript - ASP.Net MVC 在全屏模式下使导航栏消失
- c# - SqlBulkCopy 错误(已经有一个打开的 DataReader...)
- pandas - 更正 csv 文件中的一列,然后将其再次添加为新列
- sql - 如何设计数据库以记录特定的查看和编辑权限(在 Laravel 中)?
- php - 从睡眠/唤醒标记数组中获取平均清醒时间
- python - 使用 Paramiko 通过另一台服务器连接到服务器
- sql - 尽管日期加入,但日期不匹配
- c++ - 是否有当前使用的带有 C++ 编译器的系统,其中 int 超过 32 位宽?
- sql-server - CDH6.1: GOT 创建数据库管理器 sqlserver 时出错