0 / 0
Retourner à la version anglaise de la documentation
Fonctions séquentielles
Dernière mise à jour : 07 oct. 2024
Fonctions séquencielles (SPSS Modeler)

Dans le cadre de certaines opérations, la séquence des événements est importante.

Cette application vous permet de travailler avec les séquences d'enregistrements suivantes :

  • Séquences et séries temporelles
  • Fonctions séquentielles
  • Indexation des enregistrements
  • Moyenne, somme et valeurs comparatives
  • Surveillance du changement-différenciation
  • @SINCE
  • Valeurs de décalage
  • Fonctions séquentielles supplémentaires

Pour nombre d'applications, chaque enregistrement circulant dans un flux peut être considéré comme un cas particulier, indépendant de tous les autres. Auxquels cas, l'ordre des enregistrements importe généralement peu.

Toutefois, pour certaines catégories de problèmes, la séquence des enregistrements est importante. Il s'agit en général de situations de séries temporelles dans lesquelles la séquence des enregistrements représente une séquence ordonnée d'événements ou d'occurrences. Chaque enregistrement représente un instantané d'un moment particulier. Cependant, une grande partie des informations les plus complexes peut être contenue non pas dans des valeurs instantanées, mais dans la façon dont de telles valeurs évoluent et se comportent dans le temps.

Bien entendu, le paramètre pertinent peut être autre que le temps. Par exemple, les enregistrements peuvent représenter des analyses effectuées à distance sur une ligne, mais les mêmes principes s'appliquent.

Les fonctions séquentielles et les fonctions spéciales sont reconnaissables aux caractéristiques suivantes.

  • Ils sont tous préfixés par @
  • Leurs noms sont donnés en majuscules

Les fonctions séquentielles font référence à l'enregistrement actuellement traité par un noeud, aux enregistrements qui sont déjà passés dans un noeud et même, dans un cas, aux enregistrements qui ne sont pas encore passés dans un noeud. Les fonctions séquentielles peuvent être librement mélangées avec d'autres composants d'expressions CLEM, bien que certains aient des restrictions quant à leurs arguments.

Exemples

Vous pouvez avoir besoin de connaître le temps écoulé depuis un certain événement ou une condition vraie. Pour cela, utilisez la fonction @SINCE. Par exemple :

@SINCE(Income > Outgoings) 

Cette fonction renvoie le décalage du dernier enregistrement où cette condition était vraie-c'est-à-dire le nombre d'enregistrements avant celui-ci dans lequel la condition était vraie. Si la condition n'a jamais été vraie, @SINCE renvoie @INDEX + 1.

Vous pouvez également devoir faire référence à une valeur de l'enregistrement en cours dans l'expression utilisée par @SINCE. Pour cela, utilisez la fonction @THIS, qui spécifie qu'un nom de champ s'applique toujours à l'enregistrement en cours. Pour déterminer le décalage du dernier enregistrement dont la valeur de champ Concentration est plus de deux fois supérieure à celle de l'enregistrement en cours, vous pouvez utiliser :

@SINCE(Concentration > 2 * @THIS(Concentration)) 

Dans certains cas, la condition attribuée à @SINCE est par définition vraie pour l'enregistrement en cours. Par exemple :

@SINCE(ID == @THIS(ID)) 

Pour cette raison, @SINCE n'évalue pas son état pour l'enregistrement en cours. Utilisez une fonction identique, @SINCE0, pour évaluer la condition de l'enregistrement en cours et des précédents. Si la condition est vraie dans l'enregistrement en cours, @SINCE0 renvoie 0.

Tableau 1. Fonctions de séquence CLEM
Fonction Résultat Descriptif
MEAN(FIELD) Réel Renvoie la moyenne des valeurs du ou des champs (FIELD ou FIELDS) spécifiés.
@MEAN(FIELD, EXPR) Réel Renvoie la moyenne des valeurs du champ FIELD correspondant aux EXPR (nombre représenté par une expression) derniers enregistrements reçus par le noeud actuel, y compris l'enregistrement actuel. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, la moyenne sur tous les enregistrements reçus jusqu'à présent est renvoyée.
@MEAN(FIELD, EXPR, INT) Réel Renvoie la moyenne des valeurs du champ FIELD correspondant aux EXPR (nombre représenté par une expression) derniers enregistrements reçus par le noeud actuel, y compris l'enregistrement actuel. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, la moyenne sur tous les enregistrements reçus jusqu'à présent est renvoyée. INT indique le nombre maximal de valeurs à prendre en compte. Cette méthode est beaucoup plus efficace que si vous vous limitez à deux arguments.
@DIFF1(FIELD) Réel Renvoie le premier différentiel du champ FIELD. La forme à un seul argument renvoie simplement la différence entre la valeur de champ actuelle et la valeur de champ précédente. Renvoie $null$ si les enregistrements précédents pertinents n'existent pas.
@DIFF1(FIELD1, FIELD2) Réel La forme à deux arguments renvoie le premier différentiel du champ FIELD1 par rapport au champ FIELD2. Renvoie $null$ si les enregistrements précédents pertinents n'existent pas. Calculé d'après la formule @DIFF1(FIELD1)/@DIFF1(FIELD2).
@DIFF2(FIELD) Réel Renvoie le second différentiel du champ FIELD. La forme à un seul argument renvoie simplement la différence entre la valeur de champ actuelle et la valeur de champ précédente. Renvoie $null$ si les enregistrements précédents pertinents n'existent pas. @DIFF2 est calculé d'après la formule @DIFF(@DIFF(FIELD)).
@DIFF2(FIELD1, FIELD2) Réel La forme à deux arguments renvoie le second différentiel de FIELD1 par rapport à FIELD2. Renvoie $null$ si les enregistrements précédents pertinents n'existent pas. Il s'agit d'un calcul complexe -- @DIFF1(FIELD1)/@DIFF1(FIELD2) - @OFFSET(@DIFF1(FIELD1),1)/@OFFSET(@DIFF1(FIELD2))) / @DIFF1(FIELD2).
@INDEX Entier Renvoie l'index de l'enregistrement actuel. Les index sont affectés aux enregistrements au fil de leur arrivée dans le noeud en cours. Le premier enregistrement reçoit l'index 1 et la valeur d'index augmente de 1 à chacun des enregistrements suivants.
@LAST_NON_BLANK(FIELD) Tout Renvoie la dernière valeur du champ FIELD qui était renseigné, tel que défini dans un noeud type ou source en amont. S'il n'existe aucune valeur renseignée pour le champ FIELD dans les enregistrements lus jusqu'à présent, la fonction renvoie $null$. Les valeurs non renseignées, également appelées valeurs manquantes utilisateur, peuvent être définies séparément pour chaque champ.
@MAX(FIELD) Nombre Renvoie la valeur maximale du champ FIELD spécifié.
@MAX(FIELD, EXPR) Nombre Renvoie la valeur maximale du champ FIELD correspondant aux EXPR (nombre représenté par une expression) derniers enregistrements reçus jusqu'à présent, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0.
@MAX(FIELD, EXPR, INT) Nombre Renvoie la valeur maximale du champ FIELD correspondant aux EXPR (nombre représenté par une expression) derniers enregistrements reçus jusqu'à présent, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, la valeur maximale sur tous les enregistrements reçus jusqu'à présent est renvoyée. INT indique le nombre maximal de valeurs à prendre en compte. Cette méthode est beaucoup plus efficace que si vous vous limitez à deux arguments.
@MIN(FIELD) Nombre Renvoie la valeur minimale du champ FIELD spécifié.
@MIN(FIELD, EXPR) Nombre Renvoie la valeur minimale du champ FIELD correspondant aux EXPR (nombre représenté par une expression) derniers enregistrements reçus jusqu'à présent, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0.
@MIN(FIELD, EXPR, INT) Nombre Renvoie la valeur minimale du champ FIELD correspondant aux EXPR (nombre représenté par une expression) derniers enregistrements reçus jusqu'à présent, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, la valeur minimale sur tous les enregistrements reçus jusqu'à présent est renvoyée. INT indique le nombre maximal de valeurs à prendre en compte. Cette méthode est beaucoup plus efficace que si vous vous limitez à deux arguments.
@OFFSET(FIELD, EXPR) Tout Renvoie la valeur de FIELD pour l'enregistrement décalé de la valeur EXPR par rapport à l'enregistrement actuel. Un décalage positif se rapporte à un enregistrement déjà rencontré, tandis qu'un décalage négatif se rapporte à un enregistrement anticipé. Par exemple, @OFFSET(Status, 1) renvoie la valeur du champ Status dans l'enregistrement précédent, tandis que @OFFSET(Status, –4) "va voir" quatre enregistrements plus loin dans la séquence (c'est-à-dire des enregistrements qui ne sont pas encore passés par ce noeud) pour obtenir la valeur. Veuillez noter qu'un décalage négatif (fonction d'anticipation) doit être spécifié comme constante. Pour les décalages positifs uniquement, EXPR peut également être une expression CLEM arbitraire, qui est évaluée pour que l'enregistrement en cours donne le décalage. Dans ce cas, l'utilisation de la version à trois arguments de cette fonction devrait améliorer les performances (consultez la fonction suivante). Si le résultat de cette expression n'est pas un entier non négatif, une erreur est générée. Il est en effet interdit de calculer des décalages anticipés. Notez qu'une fonction @OFFSET auto-référentielle ne peut pas utiliser d'anticipation littérale. Par exemple, dans un nœud de remplissage, vous ne pouvez pas remplacer la valeur de field1 à l'aide d'une expression telle que @OFFSET(field1,-2). Dans le nœud de remplissage, lorsque vous remplissez un champ, il y a effectivement deux valeurs différentes de ce champ, à savoir la valeur préremplie et la valeur remplie après. Lorsque @OFFSET fait référence à lui-même, la valeur concernée est celle de remplacement. Cette valeur de remplacement n'existant que pour les lignes passées, une fonction @OFFSET se référençant elle-même ne peut se rapporter qu'à des lignes passées. Étant donné que @OFFSET ne peut pas se référer à l'avenir, il effectue les vérifications suivantes du décalage :
  • Si le décalage est littéral et dans le futur, une erreur est signalée avant le début de l'exécution.
  • Si le décalage est une expression débouchant sur le futur, à l'exécution @OFFSET renvoie $null$.
Notez que l'utilisation à la fois de "lookahead" et de "lookback" dans un noeud n'est pas prise en charge.
@OFFSET(FIELD, EXPR, INT) Tout Effectue la même opération que la fonction @OFFSET, avec un troisième argument, INT, qui indique le nombre maximal de valeurs à prendre en compte. Si le décalage est calculé à partir d'une expression, ce troisième argument devrait améliorer les performances. Par exemple, dans une formule telle que @OFFSET(Foo, Month, 12), le système sait comment conserver uniquement les douze dernières valeurs de Foo. Sinon, il doit stocker chaque valeur à tout hasard. Pour les décalages dont la valeur est constante y compris les décalages anticipés négatifs qui doivent être constants le troisième argument n'est d'aucune utilité. Il est recommandé d'utiliser la version à deux arguments de cette fonction. Consultez également la note sur les fonctions autoréférentielles dans la version à deux arguments décrite plus tôt. Notez que l'utilisation à la fois de "lookahead" et de "lookback" dans un noeud n'est pas prise en charge.
@SDEV(FIELD) Réel Renvoie la somme des valeurs du ou des champs (FIELD ou FIELDS) spécifiés.
@SDEV(FIELD, EXPR) Réel Renvoie l'écart-type des valeurs du champ FIELD pour les EXPR derniers enregistrements reçus par le noeud actuel, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, l'écart type sur tous les enregistrements reçus jusqu'à présent est renvoyé.
@SDEV(FIELD, EXPR, INT) Réel Renvoie l'écart-type des valeurs du champ FIELD pour les EXPR derniers enregistrements reçus par le noeud actuel, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, l'écart type sur tous les enregistrements reçus jusqu'à présent est renvoyé. INT indique le nombre maximal de valeurs à prendre en compte. Cette méthode est beaucoup plus efficace que si vous vous limitez à deux arguments.
@SINCE(EXPR) Tout Renvoie le nombre d'enregistrements transmis depuis EXPR, une expression CLEM arbitraire.
@SINCE(EXPR, INT) Tout Lorsque vous ajoutez le second argument, INT, vous indiquez le nombre maximal d'enregistrements à prendre en compte. Si EXPR n'a jamais été vraie, INT est équivalent à @INDEX+1.
@SINCE0(EXPR) Tout Considère l'enregistrement en cours, contrairement à @SINCE. La fonction @SINCE0 renvoie la valeur 0 si l'expression EXPR est vraie pour l'enregistrement actuel.
@SINCE0(EXPR, INT) Tout Lorsque vous ajoutez le second argument, INT indique le nombre maximal d'enregistrements à prendre en compte.
@SUM(FIELD) Nombre Renvoie la somme des valeurs du ou des champs (FIELD ou FIELDS) spécifiés.
@SUM(FIELD, EXPR) Nombre Renvoie la somme des valeurs du champ FIELD pour les EXPR (nombre représenté par une expression) derniers enregistrements reçus par le noeud actuel, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, la somme sur tous les enregistrements reçus jusqu'à présent est renvoyée.
@SUM(FIELD, EXPR, INT) Nombre Renvoie la somme des valeurs du champ FIELD pour les EXPR (nombre représenté par une expression) derniers enregistrements reçus par le noeud actuel, enregistrement actuel compris. FIELD doit être le nom d'un champ numérique. EXPR peut être toute expression dont le résultat est un entier supérieur à 0. Si EXPR est omis ou s'il dépasse le nombre d'enregistrements reçus jusqu'à présent, la somme sur tous les enregistrements reçus jusqu'à présent est renvoyée. INT indique le nombre maximal de valeurs à prendre en compte. Cette méthode est beaucoup plus efficace que si vous vous limitez à deux arguments.
@THIS(FIELD) Tout Renvoie la valeur du champ FIELD dans l'enregistrement actuel. Utilisée uniquement dans les expressions @SINCE.
Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus