ISFIRST (Azure Stream Analytics)
Retourne 1 si l’événement est le premier événement dans un intervalle fixe donné, ou 0 dans le cas contraire. Les intervalles sont alignés de la même façon que les fenêtres basculent (voir Fenêtre bascule). ISFIRST n’est pas affecté par les prédicats de la clause WHERE, les conditions de jointure dans la clause JOIN ou les expressions de regroupement dans la clause GROUP BY de la requête actuelle. ).
Syntaxe
ISFIRST ( timeunit , duration )
[ OVER ( [PARTITION BY partition_by_expression] [WHEN when_expression]) ]
Arguments
timeunit
Unité de temps pour la durée. Le tableau suivant répertorie toutes les valeurs d’unité de temps valides --- à la fois complètes
les noms et les abréviations peuvent être utilisés dans la requête.
Timeunit | Abréviations |
---|---|
day | dd, d |
hour | hh |
minute | mi, n |
second | ss, s |
milliseconde | ms |
microseconde | mcs |
duration
Entier volumineux qui spécifie le nombre d’unités de temps dans l’intervalle. Par exemple,
ISFIRST(minute, 15) examine des intervalles de 15 minutes. Les heures de début des intervalles sont
alignés de la même manière que dans les fenêtres bascules (voir Fenêtre bascule (Azure Stream Analytics)).
[ OVER ( partition_by_clause [when_clause]) ]
La clause OVER spécifie le sous-ensemble des événements parmi lesquels cet événement est classé :
PARTITION BY partition_by_expression clause divise le jeu de résultats produit par from
dans les partitions auxquelles la fonction est appliquée. En d’autres termes, chaque événement est comparé
uniquement pour de tels autres événements qui partagent sa valeur de partition_by_expression. S’il n’est pas spécifié, chaque
est classé par rapport à tous les autres événements au cours de l’intervalle de temps.
LA clause WHEN when_expression spécifie une condition booléenne pour les événements à prendre en compte.
En d’autres termes, chaque événement n’est classé que par rapport aux autres événements qui satisfont
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 respectivement 'true' ou 'false')
Remarques d'ordre général
ISFIRST est non déterministe. Les événements sont traités dans l'ordre temporel. S'il existe plusieurs événements avec le même horodatage, ils 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, il sera différent 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 selon l’heure d’événement d’origine.
Exemples
Indiquez si un événement de lecture de capteur est le premier intervalle de basculement de 10 minutes :
SELECT
reading,
ISFIRST(mi, 10) as first
FROM Input
Indiquez si un événement est le premier intervalle de basculement de 10 minutes par deviceid :
SELECT
deviceid,
reading,
ISFIRST(mi, 10) OVER (PARTITION BY deviceid) as first
FROM Input
Indiquer si un événement est le premier événement dont la valeur est supérieure à 50 dans les intervalles de basculement 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'