Partager via


ISFIRST

✅ Azure Stream Analytics ✅ Fabric Eventstream

Retourne 1 si l’événement est le premier événement dans un intervalle fixe donné, ou 0 sinon. Les intervalles sont alignés de la même façon que les fenêtres bascules (voir Fenêtre bascule). ISFIRST n’est pas affecté par les prédicats dans la clause WHERE, les conditions de jointure dans la clause JOIN ou le regroupement d’expressions dans la clause GROUP BY de la requête actuelle. ).

Syntaxe

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

Les arguments

timeunit

Unité de temps pour la durée. Le tableau suivant répertorie toutes les valeurs d’unité de temps valides --- complètes
les noms et abréviations peuvent être utilisés dans la requête.

Timeunit Abréviations
jour dd, d
heure Hh
minute mi, n
deuxième ss, s
milliseconde milliseconde
microseconde Mcs

Durée

Entier volumineux qui spécifie le nombre d’unités de temps dans l’intervalle. Par exemple,
ISFIRST(minute, 15) examine les intervalles de 15 minutes. Les heures de début des intervalles sont
aligné de la même façon que dans les fenêtres bascules (voir Fenêtre bascule).

[ OVER ( partition_by_clause [when_clause]) ]

La clause OVER spécifie le sous-ensemble des événements parmi lesquels cet événement est classé :

La clause PARTITION BY partition_by_expression divise le jeu de résultats produit par FROM
clause dans les partitions auxquelles la fonction est appliquée. En d’autres termes, chaque événement est comparé
uniquement à d’autres événements qui partagent sa valeur de partition_by_expression. S’il n’est pas spécifié, chacun d’eux
l’événement est classé par rapport à tous les autres événements dans l’intervalle de temps.

La clause WHEN when_expression spécifie une condition booléenne pour que les événements soient pris en compte.
En d’autres termes, chaque événement est classé uniquement par rapport à d’autres événements qui répondent
when_expression. Si l’événement lui-même ne satisfait pas when_expression, la fonction retourne 0.
La clause WHEN est facultative.

Types de retour

bigint (soit « 1 » ou « 0 » représentant « true » ou « false » respectivement)

Remarques d'ordre général

ISFIRST n’est pas déterministe. Les événements sont traités dans l’ordre temporel. S’il existe plusieurs événements avec les mêmes événements d’horodatage sont traités dans l’ordre d’arrivée.

L’application d’ISFIRST sur le jeu de résultats d’une fonction de fenêtrage peut produire des résultats inattendus. Les fonctions de fenêtrage modifient l’horodatage des événements, car chaque opération de fenêtre génère un événement à la fin de la fenêtre. L’horodatage actuel d’un événement est accessible avec system.timestamp(), après une opération de fenêtre, elle diffère de l’attribut d’heure d’événement d’origine. Si ISFIRST ne peut pas être déplacé avant l’opération de fenêtre, envisagez d’utiliser CollectTop, en triant par heure d’événement d’origine.

Exemples

Indiquez si un événement de lecture de capteur est le premier intervalle de bascule de 10 minutes :

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

Indiquez si un événement est le premier intervalle de bascule de 10 minutes par appareilid :

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

Indique si un événement est le premier événement dont la valeur est supérieure à 50 dans les intervalles de bascule de 10 minutes
par 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'

Voir aussi

RETARD
DERNIER