View a markdown version of this page

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

Utilizzate 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 annidate, 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 Description

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 data con il timestamp più recente 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 dalla 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 ponderati con gli intervalli di tempo tra i punti.

Vedi Parametri delle funzioni ponderate nel tempo per i dettagli di calcolo e 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 indicatore temporale 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 validi e negativi 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 di calcolo e 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 indicatore temporale del punto dati di input. Il peso viene calcolato come intervallo di tempo in secondi tra i punti dati o i confini delle finestre.

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

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

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

Le seguenti formule vengono utilizzate per il calcolo in cui:

  • S p = deviazione standard della popolazione

  • S f = deviazione standard della 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 della frequenza:

Equazione per la deviazione standard della frequenza.

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

AWS IoT SiteWise le funzioni temporali restituiscono i 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 del tempo, fine della finestra corrente].

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

Time-weighted funzioni, parametri

Time-weighted le funzioni 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à non buona o valore non numerico. Questo non viene considerato nel calcolo dei risultati della finestra.

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

  • Punto dati valido: qualsiasi punto dati di buona qualità e valore numerico.

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

  • L'intervallo che precede il primo punto dati noto è considerato un intervallo errato. Per ulteriori informazioni, consulta Tutorial sulle espressioni delle formule.

L'intervallo successivo all'ultimo punto dati noto continua all'infinito, interessando 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 della finestra. Per impostazione predefinita, la funzione invia il risultato della finestra solo se l'intera finestra è un intervallo valido.

Se l'intervallo valido 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
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 il tempo in secondi in cui la macchina è inattiva, per un 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 a partire dai 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/A 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
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

Risultato aggregato:

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,430610041581775 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.

Si consideri un esempio in cui un produttore utilizza AWS IoT SiteWise per monitorare lo stato di una macchina. Il produttore utilizza le seguenti misure 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 trasformazionecleaning_state_duration, che equivale aif(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none). Questa trasformazione restituisce per quanto tempo la macchina è rimasta in 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.

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

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

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

  • Se il valore x per le 9:05 AM arriva prima del valore x per le 09:00 AM e i valori di arrivano cronologicamente, equivale alle 9:05. y z 22 = 20 + 1 + 1

09:00 09:05 DEL MATTINO 09:10 DEL MATTINO 09:15 DEL MATTINO

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.