Partilhar via


ISFIRST (Azure Stream Analytics)

Devolve 1 se o evento for o primeiro evento num determinado intervalo fixo ou 0 de outra forma. Os intervalos são alinhados da mesma forma que as janelas em cascata (veja Janela em Cascata). ISFIRST não é afetado por predicados na cláusula WHERE, condições de associação na cláusula JOIN ou expressões de agrupamento na cláusula GROUP BY da consulta atual. ).

Sintaxe

ISFIRST ( timeunit  , duration )   
    [ OVER ( [PARTITION BY partition_by_expression] [WHEN when_expression]) ]  
  

Argumentos

timeunit

É a unidade de tempo durante a duração. A tabela seguinte lista todos os valores de unidade de tempo válidos --- ambos cheios
os nomes e abreviaturas podem ser utilizados na consulta.

Timeunit Abreviaturas
day dd, d
hour hh
minute mi, n
second ss, ss
milissegundos ms
microssegundos mcs

duração

Um número inteiro grande que especifica o número de timeunits no intervalo. Por exemplo,
ISFIRST(minuto, 15) irá analisar intervalos de 15 minutos. As horas de início dos intervalos são
alinhado da mesma forma que nas janelas em cascata (veja Janela em Cascata (Azure Stream Analytics)).

[ OVER ( partition_by_clause [when_clause]) ]

A cláusula OVER especifica o subconjunto dos eventos entre os quais este evento está classificado:

A cláusula PARTITION BY partition_by_expression divide o conjunto de resultados produzido pelo FROM
cláusula em partições às quais a função é aplicada. Por outras palavras, cada evento é comparado
apenas para outros eventos que partilhem o seu valor de partition_by_expression. Se não for especificado, cada um
o evento é classificado em relação a todos os outros eventos dentro do intervalo de tempo.

QUANDO when_expression cláusula especifica uma condição booleana para que os eventos sejam considerados.
Por outras palavras, cada evento só é classificado em comparação com outros eventos que satisfaçam
when_expression. Se o evento em si não satisfizer when_expression, a função devolve 0.
A cláusula WHEN é opcional.

Tipos de Devolução

bigint ("1" ou "0" que representa "verdadeiro" ou "falso", respectivamente)

Observações Gerais

ISFIRST não éndeterminista. Os eventos são processados por ordem temporal. Se existirem vários eventos com o mesmo carimbo de data/hora, os eventos são processados por ordem de chegada.

A aplicação de ISFIRST no conjunto de resultados de uma função de janela pode produzir resultados inesperados. As funções de janela alteram o carimbo de data/hora dos eventos, uma vez que todas as operações de janela produzem eventos no final da janela. O carimbo de data/hora atual de um evento pode ser acedido com system.timestamp(), após uma operação de janela, será diferente do atributo de hora do evento original. Se o ISFIRST não puder ser movido antes da operação da janela, considere utilizar CollectTop, ordenando pela hora original do evento.

Exemplos

Indique se um evento de leitura do sensor é o primeiro dentro de intervalos de 10 minutos em cascata:

SELECT  
       reading,  
       ISFIRST(mi, 10) as first  
FROM Input  

Indique se um evento é o primeiro dentro de intervalos de 10 minutos por deviceid:

SELECT  
       deviceid,  
       reading,  
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid) as first  
FROM Input  

Indicar se um evento é o primeiro evento com um valor superior a 50 dentro de intervalos em cascata 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 também

LAG (Azure Stream Analytics)
LAST (Azure Stream Analytics)