Utilice funciones temporales en las expresiones de fórmula - AWS IoT SiteWise

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice funciones temporales en las expresiones de fórmula

Utilice funciones temporales para devolver valores basados en las marcas de tiempo de los puntos de datos.

Utilice funciones temporales en las métricas

Solo en las métricas, puede utilizar las siguientes funciones que devuelven valores basados en marcas temporales de puntos de datos.

Los argumentos de las funciones temporales deben ser propiedades del modelo de activo local o expresiones anidadas. Esto significa que no se pueden usar propiedades de modelos de entidades secundarias en las funciones temporales.

Puede usar expresiones anidadas en las funciones temporales. Cuando se utilizan expresiones anidadas, se aplican las reglas siguientes:

  • Cada argumento solo puede tener una variable.

    Por ejemplo, latest( t*9/5 + 32 ) no se admite.

  • Los argumentos no pueden ser funciones de agregación.

    Por ejemplo, first( sum(x) ) no es compatible.

Función Descripción

first(x)

Devuelve el valor de la variable dada con la marca temporal más temprana durante el intervalo de tiempo especificado.

last(x)

Devuelve el valor de la variable dada con la última marca temporal durante el intervalo de tiempo especificado.

earliest(x)

Devuelve el último valor de la variable dada antes del inicio del intervalo de tiempo actual.

Esta función calcula un punto de datos para cada intervalo de tiempo, si la propiedad de entrada tiene al menos un punto de datos en su historial. Para obtener más información, consulte time-range-defintion.

latest(x)

Devuelve el último valor de la variable dada con la última marca de tiempo antes del final del intervalo de tiempo actual.

Esta función calcula un punto de datos para cada intervalo de tiempo, si la propiedad de entrada tiene al menos un punto de datos en su historial. Para obtener más información, consulte time-range-defintion.

statetime(x)

Devuelve la cantidad de tiempo en segundos que las variables dadas son positivas durante el intervalo de tiempo especificado. Puede usar lasfunciones de comparación para crear una propiedad de transformación para que la función statetime la consuma.

Por ejemplo, si tiene una propiedad Idle que es 0 o 1, puede calcular el tiempo de inactividad por intervalo de tiempo con esta expresión: IdleTime = statetime(Idle). Para obtener más información, consulte el escenario de statetime de ejemplo.

La función no admite propiedades de métricas como variables de entrada.

Esta función calcula un punto de datos para cada intervalo de tiempo, si la propiedad de entrada tiene al menos un punto de datos en su historial.

TimeWeightedAvg(x, [interpolation])

Devuelve el promedio de los datos de entrada ponderados con los intervalos de tiempo entre puntos.

Consulte los Parámetros de las funciones ponderadas por tiempo para obtener detalles sobre el cálculo y los intervalos.

El argumento opcional interpolaton debe ser una constante de cadena:

  • locf – Esta es la opción predeterminada. El cálculo utiliza el algoritmo de cálculo de última observación realizada para los intervalos entre puntos de datos. En este enfoque, el punto de datos se calcula como el último valor observado hasta la siguiente entrada de punto de datos con marca temporal.

    El valor que sigue a un punto de datos válido se extrapola como su valor hasta la siguiente marca temporal de puntos de datos.

  • linear: el cálculo utiliza el algoritmo de cálculo de interpolación lineal para los intervalos entre puntos de datos.

    El valor entre dos puntos de datos válidos se extrapola como una interpolación lineal entre los valores de esos puntos de datos.

    El valor entre puntos de datos válidos o nulos o el valor posterior al último punto de datos válido se extrapolará como un punto de datos válido.

TimeWeightedStDev(x, [algo])

Devuelve la desviación estándar de los datos de entrada ponderada con los intervalos de tiempo entre puntos.

Consulte los Parámetros de las funciones ponderadas por tiempo para obtener detalles sobre el cálculo y los intervalos.

El cálculo utiliza el algoritmo de cálculo de última observación realizada para los intervalos entre puntos de datos. En este enfoque, el punto de datos se calcula como el último valor observado hasta la siguiente entrada de punto de datos con marca temporal. El peso se calcula como el intervalo de tiempo en segundos entre los puntos de datos o los límites de las ventanas.

El argumento opcional algo debe ser una constante de cadena:

  • f – Esta es la opción predeterminada. Devuelve una varianza muestral ponderada imparcial con ponderaciones de frecuencia, donde TimeWeight se calcula en segundos. Por lo general, este algoritmo se asume dentro de la desviación estándar y se conoce como corrección de Bessel de desviación estándar para muestras ponderadas.

  • p: devuelve la varianza de las muestras ponderadas sesgada, también conocida como varianza de la población.

Para el cálculo se utilizan las siguientes fórmulas, donde:

  • Sp = Desviación estándar de la población

  • Sf = desviación estándar de la frecuencia

  • Xi = Datos de entrada

  • ωi = ponderación que equivale al intervalo de tiempo en segundos

  • μ* = media ponderada de los datos entrantes

Ecuación para la desviación estándar de la población:

Ecuación para la desviación estándar de la población.

Ecuación para la desviación estándar de la frecuencia:

Ecuación para la desviación estándar de la frecuencia.

El siguiente diagrama muestra cómo se AWS IoT SiteWise calculan las funciones temporalesfirst,, y last earliestlatest, en relación con el intervalo de tiempo actual.

AWS IoT SiteWise las funciones temporales devuelven puntos de datos en función de su marca de tiempo.
nota
  • El intervalo de tiempo parafirst(x), last(x) es (inicio de la ventana actual, final de la ventana actual].

  • El intervalo de tiempo latest(x) es (inicio del tiempo, fin de la ventana actual].

  • El intervalo de tiempo earliest(x) es (principio del tiempo, fin de la ventana anterior].

Parámetros de funciones con ponderación de tiempo

Las funciones con ponderación temporal calculadas para la ventana de agregación tienen en cuenta lo siguiente:

  • Puntos de datos dentro de la ventana

  • Intervalos de tiempo entre puntos de datos

  • Último punto de datos antes de la ventana

  • Primer punto de datos después de la ventana (para algunos algoritmos)

Términos:

  • Punto de datos nulo: cualquier punto de datos con una calidad no buena o un valor que no sea numérico. Estos no se tienen en cuenta para el cálculo de los resultados de una ventana.

  • Intervalo nulo: el intervalo que sigue a un punto de datos nulo. El intervalo anterior al primer punto de datos conocido también se considera un intervalo nulo.

  • Punto de datos válido: cualquier punto de datos con buena calidad y valor numérico.

nota
  • AWS IoT SiteWise solo consume datos GOOD de calidad cuando calcula las transformaciones y las métricas. Ignora los puntos de datos UNCERTAIN y BAD.

  • El intervalo anterior al primer punto de datos conocido se considera un intervalo nulo. Para obtener más información, consulte Tutoriales de expresiones de fórmula.

El intervalo posterior al último punto de datos conocido continúa indefinidamente y afecta a todas las ventanas siguientes. Cuando llega un nuevo punto de datos, la función vuelve a calcular el intervalo.

Siguiendo las reglas anteriores, se calcula el resultado agregado de la ventana y se limita a los límites de la ventana. De forma predeterminada, la función solo envía el resultado de la ventana si toda la ventana es un intervalo válido.

Si el intervalo válido de la ventana es inferior a la longitud de la ventana, la función no envía la ventana.

Cuando cambian los puntos de datos que afectan al resultado de la ventana, la función vuelve a calcular la ventana, incluso si los puntos de datos están fuera de la ventana.

Si la propiedad de entrada tiene al menos un punto de datos en su historial y se ha iniciado un cálculo, la función calcula las funciones agregadas con ponderación temporal para cada intervalo de tiempo.

ejemplo
Escenario de statetime de ejemplo

Considere un ejemplo en el que tiene un activo con las siguientes propiedades:

  • Idle: una medición que es 0 o 1. Cuando el valor es 1, la máquina está inactiva.

  • Idle Time: una métrica que utiliza la fórmula statetime(Idle) para calcular la cantidad de tiempo en segundos en que la máquina está inactiva, por cada intervalo de 1 minuto.

La propiedad Idle tiene los siguientes puntos de datos.

Timestamp 14:00:00 h 14:00:30 h 14:01:15 h 14:02:45 h 14:04:00 h
Idle 0 1 1 0 0

AWS IoT SiteWise calcula la Idle Time propiedad cada minuto a partir de los valores deIdle. Una vez realizado este cálculo, la propiedad Idle Time tiene los siguientes puntos de datos.

Timestamp 14:00:00 h 14:01:00 h 14:02:00 h 14:03:00 h 14:04:00 h
Idle Time N/A 30 60 45 0

AWS IoT SiteWise realiza los siguientes cálculos Idle Time al final de cada minuto.

  • A las 14:00 h (de las 13:59 h a las 14:00 h)

    • No hay datos para Idle antes de las 14:00 h, por lo que no se calcula ningún punto de datos.

  • A las 14:01 h (de las 14:00 h a las 14:01 h)

    • A las 14:00:00 h, la máquina está activa (Idle es 0).

    • A las 14:00:30 h, la máquina está inactiva (Idle es 1).

    • Idle no vuelve a cambiar antes del final del intervalo de las 14:01:00 h, por lo que el valor de Idle Time es de 30 segundos.

  • A las 14:02 h (de las 14:01 h a las 14:02 h)

    • A las 14:01:00 h, el equipo está inactivo (según el último punto de datos de las 14:00:30 h).

    • A las 14:01:15 h, la máquina sigue inactiva.

    • Idle no vuelve a cambiar antes del final del intervalo de las 14:02:00 h, por lo que el valor de Idle Time es de 60 segundos.

  • A las 14:03 h (de las 14:02 h a las 14:03 h)

    • A las 14:02:00 h, el equipo está inactivo (según el último punto de datos de las 14:01:15 h).

    • A las 14:02:45 h, la máquina está activa.

    • Idle no vuelve a cambiar antes del final del intervalo de las 14:03:00 h, por lo que el valor de Idle Time es de 45 segundos.

  • A las 14:04 h (de las 14:03 h a las 14:04 h)

    • A las 14:03:00 h, el equipo está activo (según el último punto de datos de las 14:02:45 h).

    • Idle no vuelve a cambiar antes del final del intervalo de las 14:04:00 h, por lo que el valor de Idle Time es de 0 segundos.

ejemplo
Ejemplo TimeWeightedAvg y TimeWeightedStDev escenario

Las siguientes tablas proporcionan ejemplos de entradas y salidas para estas métricas de ventana de un minuto: Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p').

Ejemplo de entrada para una ventana agregada de un minuto:

nota

Todos estos puntos de datos son GOOD de calidad.

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

Salida de resultados agregados:

nota

Ninguno: no se produjo un resultado para esta ventana.

Tiempo Avg(x) TimeWeightedAvg(x) TimeWeightedAvg(X, "linear") stDev(X) timeWeightedStDev(x) timeWeightedStDev(x, 'p')
3:00:00 4 Ninguna Ninguna 0 Ninguna Ninguna
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,5400374531753 7,724054437220943 7,659416862050705
3:04:00 0 10 2,5 0 10,084389681792215 10
3:05:00 Ninguna 0 0 Ninguna 0 0

Usa funciones temporales en las transformaciones

Solo en las transformaciones, puede utilizar la función pretrigger() para recuperar el valor de calidad GOOD de una variable antes de actualizar la propiedad que inició el cálculo de la transformación actual.

Considere un ejemplo en el que un fabricante utiliza AWS IoT SiteWise para supervisar el estado de una máquina. El fabricante utiliza las siguientes medidas y transformaciones para representar el proceso:

  • Una medición, current_state, que puede ser 0 o 1.

    • Si la máquina está en estado de limpieza, current_state equivale a 1.

    • Si la máquina está en estado de fabricación, current_state equivale a 0.

  • Una transformación, cleaning_state_duration, que equivale a if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none). Esta transformación devuelve el tiempo que la máquina ha estado en estado de limpieza en segundos, en formato de tiempo Unix. Para obtener más información, consulte Utilice funciones condicionales en las expresiones de fórmula y la función marca temporal().

Si la máquina permanece en estado de limpieza más tiempo del esperado, el fabricante podría investigar la máquina.

También puede utilizar la función pretrigger() en transformaciones multivariantes. Por ejemplo, dispone de dos mediciones denominadas x y y, y una transformación z, que equivale a x + y + pretrigger(y). En la siguiente tabla se muestran los valores de x, y y z desde las 9:00 h hasta las 9:15 h.

nota
  • En este ejemplo se presupone que los valores de las mediciones llegan en orden cronológico. Por ejemplo, el valor de x para las 09:00 h llega antes que el valor de x para las 09:05 h.

  • Si los puntos de datos de las 9:05 h llegan antes que los puntos de datos de las 9:00 h, no se calcula z a las 9:05 h.

  • Si el valor de x para las 9:05 h llega antes que el valor de x para las 09:00 h y los valores de y llegan en orden cronológico, z equivale a 22 = 20 + 1 + 1 a las las 9:05 h.

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

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

y no recibe ningún punto de datos antes de las 09:00 h. Por lo tanto, z no se calcula a las 09:00 h.

23 = 20 + 2 + 1

pretrigger(y) equivale a 1.

25 = 20 + 3 + 2

x no recibe un nuevo punto de datos. pretrigger(y) equivale a 2.

36 = 30 + 3 + 3

y no recibe un nuevo punto de datos. Por lo tanto, pretrigger(y) equivale a 3 a las 09:15 h.