我有些(簡體)數據如下:顯示標籤
{ "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 }
你在這裏看到的數據有兩個採購訂單,多少它是代表了一個獨特的產品每一行,是用過的。您還會看到這些產品分佈在多少個層面上。
有助於瞭解成本的維度是材料密度。也就是說,每個級別使用了多少物品。在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 +';
}
});
我可以在維度中輕鬆創建組和範圍。
我似乎無法做的是聚合完全相同的東西。我想看看(過濾器)PO
每個級別使用的材料數量。獲得每張採購訂單並不難,但看起來很難分組。下面的例子:
https://jsfiddle.net/efefdtcj/2/
自從我開始用一個維度基於在PO
聚集,我得到一排回各PO。
如何根據QtyPerLevel
範圍獲得一行?
有道理。這可能是出於某種瘋狂的mapReduce功能,但我一直在絞盡腦汁尋找一個。不能有完全平坦的數據,但做一些預先聚合可能是最實際的解決方案。 – Wesley
我只是創建一個Map(或d3.map),其中鍵爲PO,值爲qty,然後遍歷所有數據並聚合Map上的PO數量。然後再次循環並使用從地圖查找的總量更新所有記錄。這就是如果你使用JavaScript。在後端可能有更好的選擇,特別是如果你使用的是數據庫,在這種情況下,我建議自我加入。 –