2012-10-24 9 views
6

Właśnie zaczynam od cubism.jsJak zmienić krok dla danych Cube?

Rozbiórka kodu przykładowego Jestem w stanie pokazać dwie metryki .. jedna obliczona (kpi1) - funkcja losowa, jedna z kostki (kpi2). Działa idealnie w kroku kontekstowym 1e4, gdy tylko zmienię go na 1e3, obliczony - losowy - pokazuje dobrze w rozdzielczości 1s, podczas gdy ten z kostki wcale się nie pokazuje.

to działa:

var context = cubism.context() 
    .serverDelay(0) 
    .clientDelay(0) 
    .step(1e4) 
    .size(960); 

tego nie robi:

var context = cubism.context() 
    .serverDelay(0) 
    .clientDelay(0) 
    .step(1e3) 
    .size(960); 

Co robię źle?

<!DOCTYPE html> 
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="utf-8"> 

<title>Dashboard</title> 

</head><body><div id="body"> 


<div id="kpi1"></div> 
<div id="kpi2"></div> 


<script src="../d3.v2.js"></script> 
<script src="../cubism.v1.js"></script> 

<script>function random(name) { 
    var value = 0, 
     values = [], 
     i = 0, 
     last; 
    return context.metric(function(start, stop, step, callback) { 
    start = +start, stop = +stop; 
    if (isNaN(last)) last = start; 
    while (last < stop) { 
     last += step; 
     value = Math.max(-10, Math.min(10, value + .8 * Math.random() - .4 + .2 * Math.cos(i += .2))); 
     values.push(value); 
    } 
    callback(null, values = values.slice((start - stop)/step)); 
    }, name); 
}</script> 

<script> 

var context = cubism.context() 
    .serverDelay(0) 
    .clientDelay(0) 
    .step(1e4) 
    .size(960); 

var foo = random("foo"); 
var cube = context.cube(); 

d3.select("#kpi1").call(function(div) { 

    div.selectAll(".horizon") 
     .data([foo]) 
    .enter().append("div") 
     .attr("class", "horizon") 
     .call(context.horizon()); 

}); 

d3.select("#kpi2").call(function(div) { 

    div.selectAll(".horizon") 
     .data([cube.metric("median(cube_compute(ms))")]) 
    .enter().append("div") 
     .attr("class", "horizon") 
     .call(context.horizon()); 

}); 

</script> 

</body></html> 

Odpowiedz

4

Cubism.js wspiera każdy krok, ale system backend Cube obsługuje tylko agregację metryki z pamięci w jednym z tych pięciu krokach:

1e4 or 10 seconds 
    6e4 or 1 minute 
    3e5 or 5 minutes 
    36e5 or 1 hour 
    864e5 or 1 day 

Jeśli było użyć krok, który znajduje się pomiędzy lub poniżej nich, Cube nie byłby w stanie wykorzystać obliczeń wstępnych wykonanych na niższych i najniższych obsługiwanych poziomach, używając pyramidal reducers.

+0

Czy wiesz, jaki jest czynnik poprawy wydajności? – Renaud