Javascript 如何对多个维度求和

Javascript 如何对多个维度求和,javascript,json,crossfilter,Javascript,Json,Crossfilter,我只是从交叉滤波器开始,试图理解一些约化函数是如何工作的。我认为这对我来说是有意义的,并试图根据样本数据构建一个小示例,但我似乎无法让它工作 我想做的是,对多个列求和,得到它们的总计,例如总计和基于字段的小费,例如类型。现在我不确定我是如何处理多个列的,但实际上我发现我所采用的方法似乎对单个列都不起作用 我把一个简短的片段放在一起,我期望从输出中得到3行,显示tab、visa和现金的总计 var支付=交叉过滤[ {日期:2011-11-14T16:17:54Z,数量:2,总数:190,小费:1

我只是从交叉滤波器开始,试图理解一些约化函数是如何工作的。我认为这对我来说是有意义的,并试图根据样本数据构建一个小示例,但我似乎无法让它工作

我想做的是,对多个列求和,得到它们的总计,例如总计和基于字段的小费,例如类型。现在我不确定我是如何处理多个列的,但实际上我发现我所采用的方法似乎对单个列都不起作用

我把一个简短的片段放在一起,我期望从输出中得到3行,显示tab、visa和现金的总计

var支付=交叉过滤[ {日期:2011-11-14T16:17:54Z,数量:2,总数:190,小费:100,类型:tab}, {日期:2011-11-14T16:20:19Z,数量:2,总数:190,小费:100,类型:tab}, {日期:2011-11-14T16:28:54Z,数量:1,总数:300,小费:200,类型:visa}, {日期:2011-11-14T16:30:43Z,数量:2,总计:90,提示:0,类型:tab}, {日期:2011-11-14T16:48:46Z,数量:2,总数:90,提示:0,类型:tab}, {日期:2011-11-14T16:53:41Z,数量:2,总数:90,提示:0,类型:tab}, {日期:2011-11-14T16:54:06Z,数量:1,总数:100,小费:0,类型:现金}, {日期:2011-11-14T16:58:03Z,数量:2,总计:90,提示:0,类型:tab}, {日期:2011-11-14T17:07:21Z,数量:2,总计:90,提示:0,类型:tab}, {日期:2011-11-14T17:22:59Z,数量:2,总数:90,提示:0,类型:tab}, {日期:2011-11-14T17:25:45Z,数量:2,总数:200,小费:0,类型:现金}, {日期:2011-11-14T17:29:52Z,数量:1,总数:200,小费:100,类型:visa} ]; var typeDimension=payments.dimensionfunctiond{return d.type;}; typeDimension.group.reduceSumfunctiond{返回d.total;}; $typeDimension.topInfinity.eachFunction{ $'tgt'.append+JSON.stringifythis+; }; 当然,如果使用交叉过滤器对项目求和多个维度并不重要,您也可以使用JavaScript SQL库作为交叉过滤器的替代方案

var data = [
   {date: "2011-11-14T16:17:54Z", quantity: 2, total: 190, tip: 100, type: "tab"},
   {date: "2011-11-14T16:20:19Z", quantity: 2, total: 190, tip: 100, type: "tab"}];

var res = alasql('SELECT type, SUM(quantity) quantity AS , SUM(total) AS total, \
             SUM(tip) AS tip FROM ? GROUP BY type', [data]);
试试这个样品。或者另一个使用多维求和的示例

顺便说一下,Alasql在这些数据上比CrossFilter更快,请参见


很抱歉,对于“非交叉筛选”的回答。

这实际上很有用-我目前不限于交叉筛选,只需要一些可以让我构建互连仪表板的东西。我也会看一看这个,谢谢。我会注意到,你提到了性能——我实际上使用了一个更大的数据集。发布的示例是交叉过滤器示例,为了测试,我实际上使用了这里的数据,今晚我将检查它。要从XLSX加载数据,您可以使用:var res=alasqlSELECT Country,将[goldcarges]和[goldcarges]从XLSX'data.XLSX',{headers:true,sheetid:'olympictales'}按国家分组;要读取XLSX文件,您需要将XLSX.js库添加到您的文件中。我有一个JSON文件-以前从未使用过JSPerf,但我现在只是尝试将一个测试放在一起-只是缺少一些能够解决问题的东西-这表明Alasql在这个数据集上也更快。很好的工作:若你们在IE中比较有趣,结果完全相反。