为什么交叉过滤器无法正确排序或过滤我的数据?

时间:2019-06-04 07:49:56

标签: javascript d3.js crossfilter

我正在学习交叉过滤器,想要过滤一些数据。
因此,我拥有这么大的json file(实际上是csv),其中包含近400万行数据。

文件如下所示:
timestamp,speed,power,distance,temperature,heart_rate,cadence,altitude,lat,long 1514806362,6569,172,6.63,14,90,87,2548,500870453,33664825

我想做的就是过滤距离。

d3.csv('data2.json').then(function(data) {
  data.forEach(function(d, i) {
    d.date = parseDate(d.timestamp);
  });

  // Create instance of crossfilter with dataset
  var cf = crossfilter(data);

  // Ask crossfilter how many rows it has / Size of data
  dataSize = cf.size();
  console.log("Data size: " + dataSize);

  function parseDate(d) {
    return new Date(d*1000);
  }

  var distanceDimension = cf.dimension(function(d) { return d.distance; });
  console.log("Creating delay dimension");

  // List top 3 distance
  distanceDimensionTop3 = distanceDimension.top(3);
  console.log("Top 3 distance");
  console.table(distanceDimensionTop3);


  // List bottom 3 distance
  distanceDimensionBottom3 = distanceDimension.bottom(3);
  console.log("Bottom 3 distance");
  console.table(distanceDimensionBottom3);


  // Apply filter to get only distance above 5000 meters
  distanceDimension.filterFunction(function(d) {return d > 5000;}); 
  console.log("Appliyng distance filter for only distance above 5000 meters");


  // List bottom 3 distance
  console.log("Bottom 3 distance with filter applied");
  console.table(distanceDimension.bottom(3));
});

但是以某种方式我的代码在开始列出前3个距离时就失败了。
我得到的值为99999.88,但是在我的数据文件中,我有更大的值。

此外,当我将过滤器应用于尺寸时,过滤器也无法正确过滤。
预先感谢。

0 个答案:

没有答案