Compartir a través de


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)