2012-10-24 4 views
6

Ich beginne gerade mit cubism.js ausWie ändere ich den Schritt für Cube-Metriken?

den Beispielcode zum Strippen nach unten ich in der Lage bin zwei Metriken zu zeigen .. man berechnet (kpi1) - Zufallsfunktion, einen von Cube (kpi2). Es funktioniert perfekt in einem Kontextschritt von 1e4, sobald ich es in 1e3 umwandele, berechnet die berechnete - zufällig - zeigt gut bei einer Auflösung von 1s, während die von Cube überhaupt nicht angezeigt wird.

dies funktioniert:

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

dies nicht:

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

Was mache ich falsch?

<!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> 

Antwort

4

Cubism.js unterstützt jeden Schritt, aber das Back-End-Cube-System unterstützt nur metrische Aggregation von Speicher auf einem dieser fünf Schritte:

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

Wenn Sie einen Schritt verwenden, waren die ist zwischen oder unter diesen, Cube wäre nicht in der Lage, die Vorberechnungen in den unteren und niedrigsten unterstützten Ebenen zu nutzen, mit pyramidal reducers.

+0

Wissen Sie, welchen Faktor der Leistungsverbesserung dies bietet? – Renaud

Verwandte Themen