我使用crossfilter.js和dc.js创建了一个可视化页面。我想将过滤后的数据集导出为excel。有没有办法做到这一点。?
答案 0 :(得分:0)
我认为最好的方法是创建另一个维度,然后调用dimension.top(Infinity)
来获取所有记录(按该维度'键排序)。
Jacob Rideout创建了一个新方法的拉取请求,可以在没有开销的情况下做到这一点,但是它没有被接受(看起来它也没有被拒绝;):
https://github.com/square/crossfilter/pull/95
但是我怀疑你会注意到创建额外维度会有任何性能损失。 (如果你这样做,请评论那个PR!)
答案 1 :(得分:0)
function groupArrayAdd(keyfn) {
var bisect = d3.bisector(keyfn);
return function (elements, item) {
var pos = bisect.right(elements, keyfn(item));
elements.splice(pos, 0, item);
return elements;
};
}
function groupArrayRemove(keyfn) {
var bisect = d3.bisector(keyfn);
return function (elements, item) {
var pos = bisect.left(elements, keyfn(item));
if (keyfn(elements[pos]) === keyfn(item))
elements.splice(pos, 1);
return elements;
};
}
function groupArrayInit() {
return [];
}
var facts = crossfilter(data); //pass your mater dataset here.
var filteredRows = facts.groupAll().reduce(
groupArrayAdd(dc.pluck('shift')),
groupArrayRemove(dc.pluck('shift')),
groupArrayInit}
);
filteredRows.value()会为您提供交叉填充数据。每次过滤数据时,此函数将自动提供五个过滤输出,您可以使用任何jquery插件将其导出到Excel。
查找过滤数据的另一种方法是使用以下dc功能: 的 dimension.top(无限远)强>