我有三个CSV文件送入一个DC仪表板。第一个有100行(每个公司一个)和30个字段,并以交叉滤波器友好的方式组织。第二个文件也有100行(每个公司一个),但有40个相关的"因素"名称排列成交叉表格。第三个文件每个公司/月组合有一行,例如公司A-2017 2017年,公司A-Feb 2017等。
E.g。档案1
Company 1---Dimension1---Dimension2---etc
Company 2---Dimension1---Dimension2---etc
etc. for 100 rows
文件2
Company1---Factor1---Factor2---Factor3---Factor4---etc for 40
Company2---Factor1---Factor2---Factor3---Factor4---etc for 40
etc. for 100 rows
N.B。单个可视化需要涵盖所有40个因素,即40个因子= 1维。
档案3
Company1---Month1---Dimension4---Dimension5---Dimension6
Company1---Month2---Dimension4---Dimension5---Dimension6
Company1---Month3---Dimension4---Dimension5---Dimension6
etc for 100 companies x 12 months
我的目标是为40个因子中的每一个创建一个箱形图,以最有效的方式合并数据,因为100行只是一个小样本。决定是:合并数据与使用假团体。此决定也将在时间表上重复。如果我合并数据,我的100行将变为6万行。
我使用假组工作了。我无法使用reduce()来处理groupAll(),因此我收集每家公司的数据,然后处理它并创建一个假组。对于1000或5000家公司的文件,有更好的方法吗?
由于
艾玛
var idDimBox = facts.dimension(function(d){ return d['id']; });
var factorGrpBox = idDimBox.group().reduce(
function(p,v){//addition function
for (var i=0; i<factorFields[0].length; i++) { p[factorFields[0][i]] = v[factorFields[0][i]]; }
return p;
},
function(p,v){//removal function
for (var i=0; i<factorFields[0].length; i++) { p[factorFields[0][i]]=-1; }
return p;
},//end reduce Function
function(){
var obj = {};
for (var i=0; i<factorFields[0].length; i++) {
obj[factorFields[0][i]] = -1;
}
return obj;
}
);
var obj = factorGrpBox;//actually calls a separate function here
var tempFactor = obj.top(Infinity);//array of objects, 100 long
for (var j=0; j<factorFields[0].length; j++) {
factorFields[2][j] = [];
}
for (var i=0; i<tempFactor.length; i++) {
for (var j=0; j<factorFields[0].length; j++) {
factorFields[2][j].push(tempFactor[i].value[factorFields[0][j]]);
}
}
fakeBoxPlotGroup = {all: function() {
var myarr = [];
for (var i=0; i<factorFields[0].length; i++) {
var myobj = {};
myobj.key = factorFields[0][i];
myobj.value = factorFields[2][i];
myarr.push(myobj);
}
return myarr;
}}