- Catégories :
Fonctions de fenêtre (Général)
CONDITIONAL_TRUE_EVENT¶
Renvoie un numéro d’événement de fenêtre pour chaque ligne d’une partition de fenêtre en fonction du résultat de l’argument booléen expr1. Le numéro commence à partir de 0 et est incrémenté de 1 pour chaque ligne sur laquelle expr1 correspond à true.
Une utilisation de cette fonction consiste à diviser en sessions des partitions de fenêtre. Par exemple, dans les données de flux de clics, elle peut être utilisée pour déterminer si un utilisateur a démarré une nouvelle session en vérifiant si le dernier événement était plus long qu’un seuil.
Syntaxe¶
Arguments¶
expr1Il s’agit d’une expression booléenne qui modifie la valeur du numéro d’événement de la fenêtre lorsqu’elle renvoie true.
expr2C’est l’expression facultative à partir de laquelle effectuer la partition.
expr3C’est l’expression à partir de laquelle effectuer le classement dans chaque partition.
Notes sur l’utilisation¶
L’expression conditionnelle
expr1peut contenir les fonctions liées au rang LAG et LEAD, qui nous permettent de créer des fenêtres plus expressives. Si elles sont utilisées, ces fonctions doivent utiliser la même spécification OVER que CONDITIONAL_TRUE_EVENT.
Exemples¶
Le premier exemple illustre que :
Le numéro dans une partition augmente chaque fois que la colonne spécifiée correspond à TRUE (différent de zéro dans ce cas).
Les valeurs NULL ne sont pas considérées comme des valeurs TRUE.
Le numéro est réinitialisé à 0 pour chaque partition.
Créer et charger la table :
Interrogez la table :
L’exemple suivant montre que :
expr1peut être une expression autre qu’une colonne. Cette requête utilise l’expressiono_col > 20. La sortie de la requête indique que la valeur de o_col passe d’une valeur inférieure ou égale à 20 à une valeur supérieure à 20.expr3ne doit pas nécessairement correspondre àexpr1. En d’autres termes, l’expression de la sous-clause ORDER BY de la clause OVER ne doit pas nécessairement correspondre à l’expression de la fonction CONDITIONAL_TRUE_EVENT.
L’exemple suivant compare CONDITIONAL_CHANGE_EVENT et CONDITIONAL_TRUE_EVENT :
Cet exemple compare également CONDITIONAL_CHANGE_EVENT et CONDITIONAL_TRUE_EVENT :
Voici un exemple plus détaillé :