2016-12-09 12 views
0

Как добавить вычисляемое поле (поле, которое выполняет вычисление двух или более полей данных) в dimple.js?Как создать вычисляемое поле в dimple.js

например. У меня есть два поля 1. «Продажная стоимость» 2. «Объём продаж»

Теперь мне нужно рассчитать поле ASP = Sales Value/Sales Volume.

ответ

1

Боюсь, что ямочка не имеет встроенного способа справиться с этим. Я предполагаю, что ямочка объединяет данные для вас - отсюда и трудность. Но здесь у вас нет выбора, кроме как предварительно агрегировать до уровня точки данных и самостоятельно добавлять вычисленное поле. Например, если ваши данные имели бренд, SKU и канал, но ваша диаграмма была на уровне Brand, Channel, вам необходимо предварительно обработать данные следующим образом:

// var chartData is going to be the aggregated level you use for your chart. 
// var added is a dictionary of aggregated data returning a row index 
// for each Brand/Channel combination. 
var chartData = [], 
    added = {}; 

// Aggregate to the Brand/Channel level 
data.forEach(function (d) { 
    var key = d["Brand"] + "|" + d["Channel"], 
     i = added[key]; 

    // Check the output index 
    if (i !== undefined) { 
     // Brand/Channel have been added already so add the measures 
     chartData[i]["Sales Value"] += parseFloat(d["Sales Value"]); 
     chartData[i]["Sales Volume"] += parseFloat(d["Sales Volume"]); 
    } else { 
     // Get the index for the row we are about to add 
     added[key] = chartData.length; 
     // Insert a new output row for the Brand/Channel 
     chartData.push({ 
      "Brand": d["Brand"], 
      "Channel": d["Channel"], 
      "Sales Value": parseFloat(d["Sales Value"]) || 0, 
      "Sales Volume": parseFloat(d["Sales Volume"]) || 0 
     }); 
    } 
}); 

// Calculate ASP 
chartData.forEach(function (d) { 
    d["ASP"] = d["Sales Value"]/d["Sales Volume"]; 
}); 

// Draw the chart using chartData instead of data 
... 
+0

Спасибо большое, решение работает :) – Karthik