Partager via


DERNIER

✅ Azure Stream Analytics ✅ Fabric Eventstream

L’opérateur d’analyse LAST permet de rechercher l’événement le plus récent dans un flux d’événements dans des contraintes définies. Il est utile dans les scénarios tels que l’informatique de la dernière valeur bonne connue (par exemple, pas null), la recherche de la dernière heure lorsque l’événement correspond à certains critères, etc.

Dans Stream Analytics, l’étendue de LAST (autrement dit, la distance entre l’historique et l’événement actuel dont il a besoin) est toujours limitée à un intervalle de temps fini, à l’aide de la clause LIMIT DURATION. LAST peut éventuellement être limité aux événements qui correspondent uniquement à l’événement actuel sur une propriété ou une condition spécifique à l’aide des clauses PARTITION BY et WHEN. LAST n’est pas affecté par les prédicats dans 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.

Remarque: LAST(<expression>, <default>) est équivalent à LAG(<expression>, 0, <default>) (valeur de décalage définie sur « 0 »). Notez que LAG(<expression>, 0, <valeur par défaut>) n’est en fait pas une construction valide, car le LAG prend un décalage supérieur ou égal à 1. Par conséquent, vous devez utiliser l’opérateur LAST à la place, qui a été introduit pour des raisons pratiques et une meilleure lisibilité.

Syntaxe

LAST(<scalar_expression >, [<default>])    
       OVER ( [PARTITION BY <partition key>] LIMIT DURATION(<unit>, <length>) [WHEN boolean_expression])  
  

Les arguments

scalar_expression

Valeur à retourner. Il s’agit d’une expression de tout type qui retourne une valeur unique (scalaire) ou l’expression générique '*'. Pour ' * ' l’événement entier sera retourné et sera contenu dans l’événement de résultat (enregistrement imbriqué). scalar_expression ne peut pas contenir d’autres fonctions analytiques ou fonctions externes.

par défaut

Valeur à retourner lorsqu’il n’existe aucun critère de correspondance d’événement. Si aucune valeur par défaut n'est spécifiée, la valeur NULL est renvoyée. « Aucun événement » ne peut être le cas s’il n’existe aucun événement antérieur dans l’intervalle de temps spécifié dans l’limit_duration_clause ou si l’événement n’existe pas, mais ne correspond pas à la condition spécifiée dans l’when_clause. Si l’événement existe et que la valeur de scalar_expression est NULL, la valeur NULL est retournée. la valeur par défaut peut être une colonne, une sous-requête ou une autre expression, mais elle ne peut pas contenir d’autres fonctions analytiques ou fonctions externes. la valeur par défaut doit avoir exactement le même type que scalar_expression.

OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])

partition_by_clause La clause de clé> de partition PARTITION BY <demande que seuls les événements dont la valeur est
<la clé> de partition est la même que celle de l’événement actuel.

limit_duration_clause DURATION(<unit>, <length>) :
Spécifie la quantité de l’historique de l’événement actuel à prendre en compte. Consultez DATEDIFF pour obtenir une description détaillée des unités prises en charge et de leurs abréviations. Si vous ne trouvez pas suffisamment d’événements correspondants dans l’intervalle DURATION, la <valeur par défaut> est retournée.

when_clause Spécifie la condition booléenne pour les événements à prendre en compte dans le calcul LAST. Si aucun événement correspondant n’est trouvé dans l’intervalle DURATION, la <valeur par défaut> est retournée. La when_clause est facultative.

Types de retour

Type de données du scalar_expression spécifié. NULL est retourné si scalar_expression

Remarques d'ordre général

LAST est non 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 de LAST 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 LAST 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

Recherchez la lecture du capteur non Null la plus récente :

SELECT  
       sensorId,   
       LAST(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL)  
FROM input   

Recherchez la dernière fois que la lecture était supérieure à 50 :

SELECT
       sensorId,
       LAST(System.Timestamp()) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading > 50 )
FROM input 

Voir aussi

ISFIRST
RETARD