Usa le funzioni temporali nelle espressioni delle formule - AWS IoT SiteWise

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa le funzioni temporali nelle espressioni delle formule

Utilizza le funzioni temporali per restituire valori in base ai timestamp dei punti dati.

Usa le funzioni temporali nelle metriche

Solo nelle metriche, puoi utilizzare le seguenti funzioni che restituiscono valori in base ai timestamp dei punti dati.

Gli argomenti delle funzioni temporali devono essere proprietà del modello di asset locale o espressioni annidate. Ciò significa che non è possibile utilizzare le proprietà dei modelli di asset secondari nelle funzioni temporali.

È possibile utilizzare espressioni annidate nelle funzioni temporali. Quando si utilizzano espressioni nidificate, si applicano le seguenti regole:

  • Ogni argomento può avere una sola variabile.

    Ad esempio, latest( t*9/5 + 32 ) è supportato.

  • Gli argomenti non possono essere funzioni di aggregazione.

    Ad esempio, first( sum(x) ) non è supportato.

Funzione Descrizione

first(x)

Restituisce il valore con il primo timestamp delle variabili date nell'intervallo di tempo specificato.

last(x)

Restituisce il valore con l'ultimo timestamp delle variabili date nell'intervallo di tempo specificato.

earliest(x)

Restituisce l'ultimo valore della variabile specificata prima dell'inizio dell'intervallo di tempo corrente.

Questa funzione calcola un punto dati per ogni intervallo di tempo, se la proprietà di input ha almeno un punto dati nella cronologia. Per informazioni dettagliate, vedi time-range-defintion.

latest(x)

Restituisce l'ultimo valore della variabile specificata con l'ultimo timestamp prima della fine dell'intervallo di tempo corrente.

Questa funzione calcola un punto dati per ogni intervallo di tempo, se la proprietà di input ha almeno un punto dati nella cronologia. Per informazioni dettagliate, vedi time-range-defintion.

statetime(x)

Restituisce la quantità di tempo in secondi in cui le variabili date sono risultate positive nell'intervallo di tempo specificato. È possibile utilizzare le funzioni di confronto per creare una proprietà di trasformazione da utilizzare per la statetime funzione.

Ad esempio, se si dispone di una proprietà Idle, cioè 0 o 1, è possibile calcolare la durata dell'inattività nell'intervallo di tempo con questa espressione: IdleTime = statetime(Idle). Per ulteriori informazioni, vedere lo scenario statetime di esempio.

La funzione non supporta le proprietà dei parametri come variabili di input.

Questa funzione calcola un punto dati per ogni intervallo di tempo, se la proprietà di input ha almeno un punto dati nella cronologia.

TimeWeightedAvg(x, [interpolation])

Restituisce la media dei dati di input ponderata con gli intervalli di tempo tra i punti.

Vedi Parametri delle funzioni ponderate nel tempo per i dettagli del calcolo e degli intervalli.

L'argomento opzionale interpolaton deve essere una costante di stringa:

  • locf— Questa è l'impostazione predefinita. Il calcolo utilizza l'algoritmo di calcolo Last Observed Carry Forward per gli intervalli tra i punti dati. In questo approccio, il punto dati viene calcolato come ultimo valore osservato fino al successivo timestamp del punto dati di input.

    Il valore dopo un buon punto dati viene estrapolato come valore fino al successivo timestamp del punto dati.

  • linear— Il calcolo utilizza l'algoritmo di calcolo dell'interpolazione lineare per gli intervalli tra i punti dati.

    Il valore tra due punti dati validi viene estrapolato come interpolazione lineare tra i valori di tali punti dati.

    Il valore tra punti dati buoni e cattivi o il valore dopo l'ultimo punto dati valido verrà estrapolato come punto dati valido.

TimeWeightedStDev(x, [algo])

Restituisce la deviazione standard dei dati di input ponderata con gli intervalli di tempo tra i punti.

Vedi Parametri delle funzioni ponderate nel tempo per i dettagli del calcolo e degli intervalli.

Il calcolo utilizza l'algoritmo di calcolo Last Observed Carry Forward per gli intervalli tra i punti dati. In questo approccio, il punto dati viene calcolato come ultimo valore osservato fino al successivo timestamp del punto dati di input. Il peso viene calcolato come intervallo di tempo in secondi tra i punti dati o i confini della finestra.

L'argomento opzionale algo deve essere una costante di stringa:

  • f— Questa è l'impostazione predefinita. Restituisce una varianza campionaria ponderata imparziale con pesi di frequenza, calcolata in TimeWeight secondi. Questo algoritmo viene generalmente assunto in base alla deviazione standard ed è noto come correzione di Bessel della deviazione standard per campioni ponderati.

  • p— Restituisce la varianza del campione ponderata e distorta, nota anche come varianza della popolazione.

Le seguenti formule vengono utilizzate per il calcolo nei casi in cui:

  • S p = deviazione standard della popolazione

  • S f = deviazione standard di frequenza

  • X i = dati in entrata

  • ω i = peso che equivale all'intervallo di tempo in secondi

  • μ* = media ponderata dei dati in entrata

Equazione per la deviazione standard della popolazione:

Equazione per la deviazione standard della popolazione.

Equazione per la deviazione standard di frequenza:

Equazione per la deviazione standard di frequenza.

Il diagramma seguente mostra come AWS IoT SiteWise calcola le funzioni temporali,, e first last earliestlatest, rispetto all'intervallo di tempo corrente.

AWS IoT SiteWise le funzioni temporali restituiscono punti dati in base al relativo timestamp.
Nota
  • L'intervallo di tempo perfirst(x), last(x) è (inizio finestra corrente, fine finestra corrente].

  • L'intervallo di tempo per latest(x) è (inizio dell'ora, fine della finestra corrente].

  • L'intervallo di tempo per earliest(x) è (inizio dell'ora, fine della finestra precedente].

Parametri delle funzioni ponderati nel tempo

Le funzioni ponderate in base al tempo calcolate per la finestra aggregata tengono conto di quanto segue:

  • Punti dati all'interno della finestra

  • Intervalli di tempo tra i punti dati

  • Ultimo punto dati prima della finestra

  • Primo punto dati dopo la finestra (per alcuni algoritmi)

Termini:

  • Punto dati errato: qualsiasi punto dati con qualità o valore non numerico non buono. Questo non viene considerato nel calcolo dei risultati di una finestra.

  • Intervallo errato: l'intervallo dopo un punto dati errato. Anche l'intervallo precedente al primo punto dati noto è considerato un intervallo errato.

  • Buon punto dati: qualsiasi punto dati con buona qualità e valore numerico.

Nota
  • AWS IoT SiteWise consuma dati di GOOD qualità solo quando calcola trasformazioni e metriche. Ignora e fornisce datiUNCERTAIN. BAD

  • L'intervallo precedente al primo punto dati noto è considerato un intervallo errato. Per ulteriori informazioni, consulta Tutorial sull'espressione di formule.

L'intervallo dopo l'ultimo punto dati noto continua all'infinito e influisce su tutte le finestre successive. Quando arriva un nuovo punto dati, la funzione ricalcola l'intervallo.

Seguendo le regole precedenti, il risultato aggregato della finestra viene calcolato e limitato ai limiti delle finestre. Per impostazione predefinita, la funzione invia il risultato della finestra solo se l'intera finestra è un intervallo adeguato.

Se l'intervallo di validità della finestra è inferiore alla lunghezza della finestra, la funzione non invia la finestra.

Quando i punti dati che influiscono sul risultato della finestra cambiano, la funzione ricalcola la finestra, anche se i punti dati si trovano all'esterno della finestra.

Se la proprietà di input ha almeno un punto dati nella sua cronologia ed è stato avviato un calcolo, la funzione calcola le funzioni aggregate ponderate nel tempo per ogni intervallo di tempo.

Esempio di scenario statetime

Si consideri un esempio in cui si dispone di una risorsa con le seguenti proprietà:

  • Idle— Una misurazione che è o. 0 1 Quando il valore è 1, la macchina è inattiva.

  • Idle Time— Una metrica che utilizza la formula statetime(Idle) per calcolare la quantità di tempo in secondi in cui la macchina è inattiva, per intervallo di 1 minuto.

La proprietà Idle ha i seguenti punti dati.

Time stamp 2:00:00 PM 2:00:30 PM 2:01:15 PM 2:02:45 PM 2:04:00 PM
Idle 0 1 1 0 0

AWS IoT SiteWise calcola la Idle Time proprietà ogni minuto in base ai valori di. Idle Al termine di questo calcolo, la proprietà Idle Time ha i seguenti punti dati.

Time stamp 2:00:00 PM 2:01:00 PM 2:02:00 PM 2:03:00 PM 2:04:00 PM
Idle Time N/D 30 60 45 0

AWS IoT SiteWise esegue i seguenti calcoli Idle Time alla fine di ogni minuto.

  • Alle 2:00 PM (dall’1:59 PM alle 2:00 PM)

    • Non ci sono dati per Idle prima delle 2:00 PM, quindi nessun punto dati viene calcolato.

  • Alle 2:01 PM (dalle 2:00 PM alle 2:01 PM)

    • Alle 2:00:00 PM, la macchina è attiva (Idle è 0).

    • Alle 2:00:30 PM, la macchina è inattiva (Idle è 1).

    • Idle non cambia di nuovo prima della fine dell'intervallo alle 2:01:00 PM, quindi Idle Time è 30 secondi.

  • Alle 2:02 PM (da 2:01 PM alle 2:02 PM)

    • Alle 2:01:00 PM, la macchina è inattiva (con l'ultimo punto dati alle 2:00:30 PM).

    • Alle 2:01:15, la macchina è ancora inattiva.

    • Idle non cambia di nuovo prima della fine dell'intervallo alle 2:02:00 PM, quindi Idle Time è 60 secondi.

  • Alle 2:03 PM (dalle 2:02 PM fino 2:03 PM)

    • Alle 2:02:00 PM, la macchina è inattiva (per l'ultimo punto dati alle 2:01:15 PM).

    • Alle 2:02:45 PM, la macchina è attiva.

    • Idle non cambia di nuovo prima della fine dell'intervallo alle 2:03:00 PM, quindi Idle Time è 45 secondi.

  • Alle 2:04 PM (dalle 2:03 PM fino alle 2:04 PM)

    • Alle 2:03:00 PM, la macchina è attiva (per l'ultimo punto dati alle 2:02:45 PM).

    • Idle non cambia di nuovo prima della fine dell'intervallo alle 2:04:00 PM, quindi Idle Time è 0 secondi.

Esempio TimeWeightedAvg e TimeWeightedStDev scenario

Le tabelle seguenti forniscono input e output di esempio per queste metriche della finestra di un minuto:. Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')

Esempio di input per una finestra aggregata di un minuto:

Nota

Questi punti dati sono tutti di qualità. GOOD

03:00:00 4.0
03:01:00 2.0
03:01:10 8.0
03:01:50 20.0
03:02:00 14,0
03:02:05 10,0
03:02:10 3.0
03:02:30 20.0
03:03:30 0,0

Risultati aggregati in uscita:

Nota

Nessuno: risultato non prodotto per questa finestra.

Orario Avg(x) TimeWeightedAvg(x) TimeWeightedAvg(X, "linear") stDev(X) timeWeightedStDev(x) timeWeightedStDev(x, 'p')
3:00:00 4 Nessuno Nessuno 0 Nessuno Nessuno
3:01:00 2 4 3 0 0 0
3:02:00 14 9 13 6 5,4306 10041581775 5,385164807134504
3:03:00 11 13 12,875 8,54400374531753 7,724054437220943 7,659416862050705
3:04:00 0 10 2.5 0 10,084389681792215 10
3:05:00 Nessuno 0 0 Nessuno 0 0

Usa le funzioni temporali nelle trasformazioni

Solo nelle trasformazioni, è possibile utilizzare la pretrigger() funzione per recuperare il valore di GOOD qualità di una variabile prima dell'aggiornamento della proprietà che ha avviato il calcolo della trasformazione corrente.

Consideriamo un esempio in cui un produttore monitora AWS IoT SiteWise lo stato di una macchina. Il produttore utilizza le seguenti misurazioni e trasformazioni per rappresentare il processo:

  • Una misurazionecurrent_state, che può essere 0 o 1.

    • Se la macchina è in stato di pulizia, è current_state uguale a 1.

    • Se la macchina è in stato di produzione, è current_state uguale a 0.

  • Una trasformazione, che cleaning_state_duration equivale a. if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none) Questa trasformazione restituisce per quanto tempo la macchina è rimasta nello stato di pulizia, in secondi, nel formato Unix epoch. Per ulteriori informazioni, vedere Usa le funzioni condizionali nelle espressioni delle formule e la funzione timestamp ().

Se la macchina rimane in stato di pulizia più a lungo del previsto, il produttore potrebbe esaminare la macchina.

È possibile utilizzare la pretrigger() funzione anche in trasformazioni multivariate. Ad esempio, avete due misure denominate x and e y una trasformazione uguale a. z x + y + pretrigger(y) La tabella seguente mostra i valori per x e z dalle 9:00 alle 9:15. y

Nota
  • Questo esempio presuppone che i valori delle misurazioni arrivino in ordine cronologico. Ad esempio, il valore di x per 09:00 AM arriva prima del valore di x 09:05.

  • Se i punti dati per le 9:05 arrivano prima dei punti dati per le 9:00, z non viene calcolato alle 9:05.

  • Se il valore di x 9:05 AM arriva prima del valore di 09:00 AM e i valori di arrivano in x ordine cronologico, è uguale alle 9:05. y z 22 = 20 + 1 + 1

09:00 09:05 09:10 09:15

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

ynon riceve alcun punto dati prima delle 09:00. Pertanto, z non viene calcolato alle 09:00.

23 = 20 + 2 + 1

pretrigger(y)è uguale a 1.

25 = 20 + 3 + 2

xnon riceve un nuovo punto dati. pretrigger(y)è uguale a 2.

36 = 30 + 3 + 3

ynon riceve un nuovo punto dati. Pertanto, è pretrigger(y) uguale a 3 alle 09:15.