我正在学习交叉过滤器,想要过滤一些数据。
因此,我拥有这么大的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
,但是在我的数据文件中,我有更大的值。
此外,当我将过滤器应用于尺寸时,过滤器也无法正确过滤。
预先感谢。