10.6. Timegraphs¶
10.6.1. Espressioni per le serie calcolate¶
All'interno dei timegraph le serie "calcolate" sono delle serie calcolate on-demand utilizzando i valori delle altre serie definite nello stesso timegraph.
Ipotizziamo di avere un datagroup cosi' definito:
datagroup prova datasource ds1 exit datasource ds2 exit timegraph grafico serie serie1 var-value ds1 legend "Prima serie" render-order 0 exit serie serie2 var-value ds2 legend "Seconda serie" render-order 0 exit serie calcolata computed-value serie1 + serie2 legend "Serie calcolata" render-order 1 exit serie calcolata2 computed-value calcolata * 2 legend "Serie calcolata 2" render-order 2 exit exit exit
In questo datagroup e' definito un timegraph chiamato "grafico" che grafica 3 serie: serie1, serie2 e calcolata.
I valori delle prime due (serie1 e serie2) vengono estratti da dati reali, piu' precisamente dai due datasource ds1 e ds2 definiti all'interno del datagroup.
I valori della serie "calcolata" vengono calcolati prendendo sommando i valori corrispondenti delle altre due serie gia' definite.
Esempio:
t0 t1 t2 t3 t4 serie1 1 2 3 4 5 serie2 25 -3 45 34 23 calcolata 26 -1 48 38 25
10.6.1.1. Operatori ammessi¶
L'espressione deve essere un'espressione matematica valida. Esempio:
1 + 2 / 3 * abs(-3)
Gli operatiri matematici disponibili sono:
Operatore
Descrizione
a + b
a - b
a * b
a / b
a % b
a ** b
All'interno dell'espressione possono essere usate le seguenti funzioni:
funzione
Descrizione
abs(x)
divmod(x)
int(x)
pow(x,e)
float(x)
long(x)
max(x)
min(x)
log(n,e)
sqrt(x)
sin(x)
cos(x)
radians(x)
Funzioni speciali:
funzione
Descrizione
iftrue(c,t,e)
If "c" is "true" returns "t" else returns "e"
ifnull(x,d)
10.6.1.2. Variabili disponibili¶
All'interno delle espressione di una serie possono essere sempre usate come variabili:
I nomi delle serie calcolate subito prima (in base al parametro "render-order"), che definiscono il parametro "var-value".
Simboli / costanti aggiuntive calcolate al tempo dell'elaborazione.
Questi sono i simboli/costanti disponibili:
funzione
Descrizione
NONE o None
Costante nulla
__ts_start__
timestamp di inizio serie (x0)
__ts_end__
timestamp di fine serie (xn)
__step__
delta temporale tra i valori della serie
__t__
timestamp corrente all'interno della serie
__i__
indice dell'elemento calcolato nella serie
Esempio:
datagroup test ... datasource ds1 <--+ exit | referenzia "ds1" ... | timegraph grafico1 | serie v | <--+ var-value ds1 ---+ | utilizza "v" exit | serie x | computed-value v * __i__ * 3 ---+ <--+ exit | utilizza x serie y | computed-value x + 10 ---+ exit exit exit
10.6.1.3. Valori nulli nelle serie¶
Se all'interno di una espressione viene usata una serie che contiene i valori nulli, il singolo valore della serie viene considerato equivalente alla costante "NONE".
Il valore "NONE" e' un valore speciale e quando viene usato all'interno di una espressione aritmetica provoca come risultato sempre "NONE".
L'unico modo per evitare questo comportamento e' usare la funzione isnull().
Esempio:
datagroup prova ... datasource ds1 ... exit ... timegraph grafico1 serie x var-value ds1 exit serie y1 computed-value "x * 3" exit serie y2 computed-value "ifnull(x, 0) * 3" exit exit ... exit
10.6.1.4. Ordine di valutazione delle serie¶
- Quando vengono calcolate le serie l'ordine di valutazione e' il seguente:
estrazione dei valori per tutte le serie "reali" (con parametro 'var-value')
per ogni serie con parametro "computed-value" calcolo valori in base alle serie "reali" e "calcolte" processate al giro precedente in ordine di valutazione.