9.7. Timegraphs

9.7.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"
                exit

                serie serie2
                        var-value ds2
                        legend "Seconda serie"
                exit

                serie calcolata
                        computed-value  serie1 + serie2
                        legend "Serie calcolata"
                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

9.7.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)  

9.7.1.2. Variabili disponibili

All’interno delle espressioni possono essere sempre usate come variabili i nomi delle serie che definiscono il parametro “var-value”.

Sono disponibili i seguenti altri simboli/costanti:

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

9.7.1.3. Valori nulli nelle serie

Se all’interno di una espressione viene usata una serie che contiene i valori nulli, il singolo valori 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

9.7.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”

Questo significa che non e’ possibile utilizzare all’interno di una espressione di una serie calcolate i valori di un’altra serie calcolata.