我用crossfilter.js和dc.js制作了一个可视化页面。我想将过滤后的数据集导出到excel。有什么办法可以做到这一点吗?
发布于 2014-06-02 17:46:48
我认为最好的方法是创建另一个维度,然后调用dimension.top(Infinity)
来获取所有记录(按该维度的键排序)。
Jacob Rideout创建了一个新方法的拉取请求,以在没有开销的情况下做到这一点,但它没有被接受(看起来也没有被拒绝;):
https://github.com/square/crossfilter/pull/95
但我怀疑您是否会注意到创建额外维度带来的性能损失。(如果你这样做,请对该公关发表评论!)
发布于 2017-08-22 08:27:16
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()会给你交叉过滤的数据。每次过滤数据时,此函数将自动给出5个过滤后的输出,您可以使用任何jquery插件将这些输出导出到excel。
另一种查找过滤数据的方法是使用下面的dc函数:dimension.top(Infinity)
https://stackoverflow.com/questions/23994899
复制