将聚合除以聚合(D3 / DC / Crossfilter / Reductio)
Dividing aggregate by aggregate (D3 / DC/ Crossfilter / Reductio)
Fiddle 供参考:https://jsfiddle.net/33228p1d/4/
引用页面上的 Cost Average
图表。使用以下代码呈现的图表:
var cpa = ndx.dimension(function (d) {
return d.location;
});
var cpaGroup = cpa.group().reduceSum(function (d) {
return d.total;
});
图表本身:(为简洁起见省略了样式)
cpaChart
.dimension(cpa)
.group(cpaGroup)
.label(function (d) {
return d.key + " $" + d.value;
})
.title(function (d) {
return d.value;
})
.elasticX(true)
.ordering(function (d) { return -d.value })
.xAxis().ticks(4);
目前,它准确显示 Front
和 Back
个位置的总数。
我想要它做的是显示总计除以该位置的唯一 PO 的数量,以显示每个位置的平均成本。
因此,例如,对于 Back
,我有两个唯一的采购订单,总计 6
。我希望看到 396 / 2
每个位置的平均成本 198
。
如果您仍然愿意使用 Reductio,请在同一组上跟踪 sum 和 exceptionCount,然后将它们划分到 valueAccessor
访问器中:
var cpaGroup = reductio()
.sum('total')
.exception(function(d) { return d.po; })
.exceptionCount(true)(cpa.group());
cpaChart
.width(400)
.height(200)
.margins({ top: 20, left: 10, right: 10, bottom: 20 })
.dimension(cpa)
.group(cpaGroup)
.ordinalColors(['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#dadaeb'])
.label(function (d) {
return d.key + " $" + (Math.round(d.value.sum / d.value.exceptionCount));
})
.title(function (d) {
return d.value;
})
.valueAccessor(function(d) {
return d.value.sum / d.value.exceptionCount;
})
.elasticX(true)
.ordering(function (d) { return -d.value })
.xAxis().ticks(4);
Fiddle 供参考:https://jsfiddle.net/33228p1d/4/
引用页面上的 Cost Average
图表。使用以下代码呈现的图表:
var cpa = ndx.dimension(function (d) {
return d.location;
});
var cpaGroup = cpa.group().reduceSum(function (d) {
return d.total;
});
图表本身:(为简洁起见省略了样式)
cpaChart
.dimension(cpa)
.group(cpaGroup)
.label(function (d) {
return d.key + " $" + d.value;
})
.title(function (d) {
return d.value;
})
.elasticX(true)
.ordering(function (d) { return -d.value })
.xAxis().ticks(4);
目前,它准确显示 Front
和 Back
个位置的总数。
我想要它做的是显示总计除以该位置的唯一 PO 的数量,以显示每个位置的平均成本。
因此,例如,对于 Back
,我有两个唯一的采购订单,总计 6
。我希望看到 396 / 2
每个位置的平均成本 198
。
如果您仍然愿意使用 Reductio,请在同一组上跟踪 sum 和 exceptionCount,然后将它们划分到 valueAccessor
访问器中:
var cpaGroup = reductio()
.sum('total')
.exception(function(d) { return d.po; })
.exceptionCount(true)(cpa.group());
cpaChart
.width(400)
.height(200)
.margins({ top: 20, left: 10, right: 10, bottom: 20 })
.dimension(cpa)
.group(cpaGroup)
.ordinalColors(['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#dadaeb'])
.label(function (d) {
return d.key + " $" + (Math.round(d.value.sum / d.value.exceptionCount));
})
.title(function (d) {
return d.value;
})
.valueAccessor(function(d) {
return d.value.sum / d.value.exceptionCount;
})
.elasticX(true)
.ordering(function (d) { return -d.value })
.xAxis().ticks(4);