将crossfilter数据集导出为dc.js中的excel

时间:2014-06-02 12:46:32

标签: dc.js crossfilter

我使用crossfilter.js和dc.js创建了一个可视化页面。我想将过滤后的数据集导出为ex​​cel。有没有办法做到这一点。?

2 个答案:

答案 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(无限远)