在聚合上显示标签(Crossfilter + Reductio)
Show Label on Aggregate (Crossfilter + Reductio)
我有一些(简化的)数据如下:
{ "PO": 1353901, "Qty": 1, "Levels": 3 },
{ "PO": 1353901, "Qty": 2, "Levels": 3 },
{ "PO": 50048309,"Qty": 1, "Levels": 1 },
{ "PO": 50048309,"Qty": 4, "Levels": 1 },
{ "PO": 50048309,"Qty": 1, "Levels": 1 }
您在此处看到两个采购订单的数据,每行代表一种独特的产品及其使用量。您还可以看到这些产品分布在多少层。
有助于理解成本的一个维度是material密度。也就是说,每个级别使用了多少项目。在 1353901
的情况下,在三个级别上使用了三个项目(数量聚合,级别不聚合),导致每个级别一个项目。
对于50048309
,一层使用了六个项目,显示出更高的植入密度。这告诉我很多工作集中在一个地方。
过滤平面数据很容易,并且不难分组到范围内。以Levels
为例:
var levels = ndx.dimension(function (d) {
var level = d.Levels;
if (level == 1) {
return 'One';
} else if (level == 2) {
return 'Two';
} else if (level == 3) {
return 'Three';
} else {
return 'Four +';
}
});
我可以轻松地在一个维度内创建组和范围。
我似乎无法做的是聚合的完全相同的事情。我想按每个级别使用的 material 数量查看(过滤器)PO
。每个采购订单的数字并不难获取,但成组查看似乎很难。下面的示例:
https://jsfiddle.net/efefdtcj/2/
自从我开始使用基于 PO
聚合的维度后,我为每个 PO 返回了一行。
如何让每个 QtyPerLevel
范围返回一行?
我觉得你需要预先计算一下。即,向每个采购订单行添加一个新的 属性,其中包含采购订单中的总数量值。当你这样做的时候,你也可以计算 QtyPerLevel
:
{ "PO": 1353901, "Qty": 1, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 1353901, "Qty": 2, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 4, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 }
然后在 QtyPerLevel
上创建一个 Crossfilter 维度并对其进行过滤或分组:
var ndx = crossfilter([
{ "PO": 1353901, "Qty": 1, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 1353901, "Qty": 2, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 4, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 }]);
var qtyPerLevelDim = ndx.dimension(function(d) { return d.QtyPerLevel; });
var qtyPerLevelGrp = qtyPerLevelDim.group();
我有一些(简化的)数据如下:
{ "PO": 1353901, "Qty": 1, "Levels": 3 },
{ "PO": 1353901, "Qty": 2, "Levels": 3 },
{ "PO": 50048309,"Qty": 1, "Levels": 1 },
{ "PO": 50048309,"Qty": 4, "Levels": 1 },
{ "PO": 50048309,"Qty": 1, "Levels": 1 }
您在此处看到两个采购订单的数据,每行代表一种独特的产品及其使用量。您还可以看到这些产品分布在多少层。
有助于理解成本的一个维度是material密度。也就是说,每个级别使用了多少项目。在 1353901
的情况下,在三个级别上使用了三个项目(数量聚合,级别不聚合),导致每个级别一个项目。
对于50048309
,一层使用了六个项目,显示出更高的植入密度。这告诉我很多工作集中在一个地方。
过滤平面数据很容易,并且不难分组到范围内。以Levels
为例:
var levels = ndx.dimension(function (d) {
var level = d.Levels;
if (level == 1) {
return 'One';
} else if (level == 2) {
return 'Two';
} else if (level == 3) {
return 'Three';
} else {
return 'Four +';
}
});
我可以轻松地在一个维度内创建组和范围。
我似乎无法做的是聚合的完全相同的事情。我想按每个级别使用的 material 数量查看(过滤器)PO
。每个采购订单的数字并不难获取,但成组查看似乎很难。下面的示例:
https://jsfiddle.net/efefdtcj/2/
自从我开始使用基于 PO
聚合的维度后,我为每个 PO 返回了一行。
如何让每个 QtyPerLevel
范围返回一行?
我觉得你需要预先计算一下。即,向每个采购订单行添加一个新的 属性,其中包含采购订单中的总数量值。当你这样做的时候,你也可以计算 QtyPerLevel
:
{ "PO": 1353901, "Qty": 1, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 1353901, "Qty": 2, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 4, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 }
然后在 QtyPerLevel
上创建一个 Crossfilter 维度并对其进行过滤或分组:
var ndx = crossfilter([
{ "PO": 1353901, "Qty": 1, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 1353901, "Qty": 2, "Levels": 3, "TotalQty": 3, "QtyPerLevel": 1 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 4, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 },
{ "PO": 50048309,"Qty": 1, "Levels": 1, "TotalQty": 6, "QtyPerLevel": 6 }]);
var qtyPerLevelDim = ndx.dimension(function(d) { return d.QtyPerLevel; });
var qtyPerLevelGrp = qtyPerLevelDim.group();