Я несколько (упрощенно) данные следующим образом:Показать Этикетка на Совокупности (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 }
Вы видите здесь данные для двух заказов на закупку, каждая строка, представляющая собой уникальный продукт и сколько это было используемый. Вы также видите, сколько уровней были распределены по этим продуктам.
Измерение, которое поможет понять стоимость - плотность материала. То есть, сколько элементов было использовано на уровень. В случае 1353901
было три элемента, используемые на трех уровнях (Qty получает агрегированное значение, Levels do not), в результате чего один элемент за уровень.
Для 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
, я получаю строку обратно для каждого ПО.
Как получить один ряд назад на QtyPerLevel
диапазон?
Имеет смысл. Возможно, существует какая-то сумасшедшая функция mapReduce для этого, но я искал свой мозг, ища его. Не может быть полностью плоских данных, но некоторые предварительные агрегации могут быть наиболее практичным решением. – Wesley
Я бы просто создал карту (или d3.map) с ключами, являющимися PO и значениями qty, затем пронумеровали все ваши данные и суммировали количества заказов на карте. Затем повторите цикл и обновите все свои записи совокупными количествами, поднятыми с карты. Вот если вы работаете в JavaScript. На бэкэнд может быть лучший вариант, особенно если вы используете базу данных, и в этом случае я бы рекомендовал самоподключение. –