sequence cspade

Cas Limite : Maintenance Prédictive et Séquences Tronquées

Scénario de test & Cas d'usage

Contexte Métier

Dans une usine, on surveille les codes d'erreur des machines. On cherche des séquences complexes de pannes. Ce test valide la gestion des limites (longueur de séquence) et des événements simultanés ou très espacés qui doivent être exclus par les paramètres de contrainte.
Préparation des Données

Données contenant des cas limites : événements simultanés (même timestamp), trous temporels immenses, et chaînes très longues.

Copié !
1DATA casuser.machine_errors;
2 INPUT machine_id $ ts_heure error_code $;
3 DATALINES;
4 M1 10 E001
5 M1 10 E002
6 M1 12 E003
7 M2 100 E001
8 M2 500 E003
9 M3 10 A
10 M3 11 B
11 M3 12 C
12 M3 13 D
13 M3 14 E
14 ;
15RUN;

Étapes de réalisation

1
Test des contraintes : exclusion des gaps trop grands et limitation de la longueur des motifs trouvés.
Copié !
1PROC CAS;
2 sequence.cspade /
3 TABLE={name="machine_errors", caslib="casuser"},
4 sequenceId="machine_id",
5 eventId="ts_heure",
6 itemId="error_code",
7 supportCnt=1,
8 maxGap=50, /* Exclut M2 (Gap=400) */
9 maxLen=3, /* Tronque la séquence de M3 */
10 casout={name="critical_sequences", caslib="casuser", replace=true};
11RUN;
12QUIT;

Résultat Attendu


1. Pour M1: E001 et E002 sont simultanés (event set), suivis de E003.
2. Pour M2: La séquence E001->E003 ne doit PAS apparaître car le gap (400) > maxGap (50).
3. Pour M3: Les séquences trouvées ne doivent pas dépasser 3 éléments (ex: A->B->C), la séquence complète A->B->C->D->E ne doit pas être renvoyée en tant que telle.