Compartir a través de


ISFIRST

✅ Secuencia de eventos de Azure Stream Analytics ✅ Fabric

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, las condiciones de combinación en la cláusula JOIN o las 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 durante la duración. En la tabla siguiente se enumeran todos los valores de unidad de tiempo válidos --- ambos completos.
se pueden usar nombres y abreviaturas en la consulta.

Timeunit Abreviaturas
día dd, d
hora Hh
minuto mi, n
segundo ss, s
milisegundo Sra.
microsegundo Mcs

duración

Entero grande que especifica el número de unidades de tiempo 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).

[ 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 una de ellas
el evento 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 cumplen
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 ("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 los mismos eventos de marca de tiempo 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 un 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 que diferirá 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

Indica 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  

Indica 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 superior a 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'

Véase también

RETRASO
ÚLTIMO