D3和交叉过滤器抛出错误

时间:2018-06-28 11:05:41

标签: crossfilter

我需要制作一个带有D3 DC和交叉滤波器的仪表板。

来自Web服务的数据将近一百万条记录。

但是,交叉过滤器引发的错误“未捕获的RangeError:超出最大调用堆栈大小”。

什么会导致交叉过滤器以这种方式崩溃?

1 个答案:

答案 0 :(得分:0)

最可能的原因是您拥有的数据不是自然排序的:也就是说,您的数据中包含NaN。

https://github.com/crossfilter/crossfilter/wiki/Crossfilter-Gotchas#natural-ordering-of-dimension-and-group-values

问题在于,NaN < x对于所有数字x都是错误的,而NaN > x也总是错误的。因此,如果您的排序例程未明确检查无效输入,则它可以永久运行。而且,如果该排序例程是递归的,则可能会崩溃。

出于效率的考虑,交叉滤波器不检查其输入。也许可以在不影响效率的情况下添加验证?

https://github.com/crossfilter/crossfilter/issues/69