ISFIRST (Azure Stream Analytics)
Devuelve 1 si el evento es el primer evento dentro de un intervalo fijo determinado o 0 de lo contrario. Los intervalos se alinean de la misma manera que las ventanas de saltos de tamaño constante (consulte Ventana de saltos de tamaño constante). ISFIRST no se ve afectado por predicados en la cláusula WHERE, condiciones de combinación en la cláusula JOIN o expresiones de agrupación en la cláusula GROUP BY de la consulta actual. ).
Sintaxis
ISFIRST ( timeunit , duration )
[ OVER ( [PARTITION BY partition_by_expression] [WHEN when_expression]) ]
Argumentos
timeunit
Es la unidad de tiempo para la duración. En la tabla siguiente se enumeran todos los valores de unidad de tiempo válidos --- ambos completos.
los nombres y las abreviaturas se pueden usar en la consulta.
Timeunit | Abreviaturas |
---|---|
day | dd, d |
hora | hh |
minute | mi, n |
second | ss, s |
milisegundo | ms |
microsegundo | mcs |
duration
Entero grande que especifica el número de timeunits en el intervalo. Por ejemplo,
ISFIRST(minute, 15) examinará intervalos de 15 minutos. Las horas de inicio de los intervalos son
alineado de la misma manera que en las ventanas de saltos de tamaño constante (consulte Ventana de saltos de tamaño constante (Azure Stream Analytics)).
[ OVER ( partition_by_clause [when_clause]) ]
La cláusula OVER especifica el subconjunto de los eventos entre los que se clasifica este evento:
PARTITION BY partition_by_expression cláusula divide el conjunto de resultados generado por from
cláusula en particiones a las que se aplica la función. En otras palabras, se compara cada evento
solo a otros eventos que comparten su valor de partition_by_expression. Si no se especifica, cada uno
event se clasifica con respecto a todos los demás eventos dentro del intervalo de tiempo.
WHEN when_expression cláusula especifica una condición booleana para los eventos que se deben tener en cuenta.
En otras palabras, cada evento solo se clasifica en comparación con otros eventos que satisfacen
when_expression. Si el evento en sí no satisface when_expression, la función devuelve 0.
La cláusula WHEN es opcional.
Tipos de valor devuelto
bigint (ya sea '1' o '0' que representa 'true' o 'false' respectivamente)
Notas generales
ISFIRST no es determinista. Los eventos se procesan en orden temporal. Si hay varios eventos con la misma marca de tiempo, estos se procesan en el orden de llegada.
La aplicación de ISFIRST en el conjunto de resultados de una función de ventana puede producir resultados inesperados. Las funciones de ventana modifican la marca de tiempo de los eventos, ya que cada operación de ventana genera el evento al final de la ventana. Se puede tener acceso a la marca de tiempo actual de un evento con system.timestamp(), después de una operación de ventana, se diferenciará del atributo de hora del evento original. Si ISFIRST no se puede mover antes de la operación de ventana, considere la posibilidad de usar CollectTop, ordenando por la hora del evento original.
Ejemplos
Indique si un evento de lectura del sensor es el primero en intervalos de saltos de tamaño constante de 10 minutos:
SELECT
reading,
ISFIRST(mi, 10) as first
FROM Input
Indique si un evento es el primero en intervalos de saltos de tamaño constante de 10 minutos por deviceid:
SELECT
deviceid,
reading,
ISFIRST(mi, 10) OVER (PARTITION BY deviceid) as first
FROM Input
Indica si un evento es el primer evento con un valor mayor que 50 en intervalos de saltos de tamaño constante de 10 minutos.
por deviceid:
SELECT
deviceid,
reading,
ISFIRST(mi, 10) OVER (PARTITION BY deviceid WHEN reading > 50 AND devicetype = 'thermostat') as firstAbove,
ISFIRST(mi, 10) OVER (PARTITION BY deviceid WHEN reading < 50 AND devicetype = 'thermostat') as firstUnder
FROM Input
WHERE
devicetype = 'thermostat'
Consulte también
LAG (Análisis de transmisiones de Azure)
LAST (Azure Stream Analytics)