07 – Esempi

@Var è il nome generico della variabile utilizzata negli esempi.

Esempi di KPI semplici

Espressioni condizionali (CASE e IIF)

CASE @Var
    WHEN 30 THEN 1
    ELSE 0
END;

La stessa formula può essere scritta come:

IIF(@Var = 30, 1, 0);

Example 2:

CASE
    WHEN @Var = 30 THEN 1
    WHEN @Var = 60 THEN 2
    WHEN @Var >= 90 THEN 3
    ELSE 0
END;

Operatori logici AND e OR

CASE
    WHEN (@Var1 = 1) OR (@Var2 = 50 AND @Var3 = 100) THEN 1
    ELSE 0
END;

Espressioni condizionali annidate (CASE in un CASE)

CASE
    WHEN @Var1 = 0 THEN 0
    WHEN @Var1 < 10 THEN
        CASE
            WHEN @Var2 = 100 THEN 1000
            ELSE 2000
        END
    ELSE
        CASE
            WHEN @Var2 = 200 THEN 2000
            ELSE 4000
        END
END;

Coefficiente di correlazione

@@CALCULATE_EVERY = 15 MINUTES;
@@DATA_COVERAGE = 1 HOUR;
hstats.cor(@Var1, @Var2);

Media

@@CALCULATE_EVERY=1 HOUR;
@@DATA_COVERAGE=1 HOUR;
hstats.avg(@Var);

@@CALCULATE_EVERY = 1 DAY;
@@DATA_COVERAGE = 1 DAY;
hstats.avg(IIF(@Status = 1, @Var, NULL);

Rapporto tra medie su periodi differenti

@@CALCULATE_EVERY = 1 WEEK;
@@DATA_COVERAGE = 2 DAYS;
@@DATA2_COVERAGE = 2 DAYS;
@@DATA2_TIMESHIFT = 1 WEEKS;
hstats.avgratio(@Var);

Pendenza

stats.slope(@Var, 1 HOUR);

Media mobile esponenziale

stats.ema(@Var,0.5);

OR

CASE
WHEN 1 IN (@Var1, @Var2, @Var3)
THEN 1
ELSE 0
END;

Calcolo su orari durante la giornata

Vengono effettuati dei calcoli diversi a seconda dell’orario della giornata in cui arriva il dato.

@@TIMESTAMP_POSITION = END;
@@CALCULATE_EVERY = 1 MINUTE;
CASE   
    WHEN @Var = 1 THEN
        CASE
            WHEN CAST(@@EndOfPeriod_local AS TIME) BETWEEN ’00:00:00′ AND ’07:30:00′ THEN 1
            WHEN CAST(@@EndOfPeriod_local AS TIME) BETWEEN ’08:00:00′ AND ’16:30:00′ THEN 1
            WHEN CAST(@@EndOfPeriod_local AS TIME) >= ’17:00:00′ THEN 1
            ELSE 0
        END
    ELSE 0
END;

Commento: il KPI è valorizzato a 1 se ci troviamo tra mezzanotte e le 7:30, tra le 8:00 e le 16:30 e tra le 17:00 e mezzanotte, altrimenti viene valorizzato a 0.
Il fuso orario utilizzato è quello locale, ossia quello dell’impianto in cui è presente il KPI.

Calcolo media condizionale

L’obiettivo è quello di calcolare la media del tag @Var, solo quando il tag @Status vale 4.
NOTA: i valori a null vengono ignorati quando si calcolano funzioni aggregate, come ad esempio la media.

@@CALCULATE_EVERY = 1 DAY;
@@DATA_COVERAGE = 1 DAY;
hstats.avg(
    CASE
            WHEN @Status = 4 THEN @Var
            ELSE NULL
    END

);

Contatempo

Questa formula calcola il totale del tempo, in secondi, in cui la variabile @Var è rimasta a ON (valore 1).

@@CALCULATE_EVERY = 2 HOURS;
hstats.digitaltime_on(@Var);

Bitmask

CASE
    WHEN @Var & 0x00 > 0 THEN 1
    WHEN @Var & 0x01 > 0 THEN 2
    ELSE 0
END;

Somma degli incrementi nel periodo

@@CALCULATE_EVERY = 1 DAY;
@@DATA_COVERAGE = 1 DAY;
@@SKIP_WHEN_NULL = 1;
hstats.sum_of_increments(@Var);

Contatore del numero di uscite/rientri soglia

Questa formula conta il numero di volte in cui il tag @Var ha sorpassato una determinata soglia (10 in questo esempio):

@@SKIP_WHEN_NULL = 1;
CASE
    WHEN @@PreviousValue(@Var) < 10 AND @Var >= 10 THEN ISNULL(@@THIS, 0) + 1
    ELSE NULL
END;

Questa formula conta invece il numero di volte in cui il tag @Var rientra sotto quella soglia:

@@SKIP_WHEN_NULL = 1;
CASE
    WHEN @@PreviousValue(@tagCounter) >= 10 AND @tagCounter < 10 THEN ISNULL(@@THIS, 0) + 1
    ELSE NULL
END;

Was this helpful?

0 / 0