Scénario de test & Cas d'usage
Données contenant des cas limites : événements simultanés (même timestamp), trous temporels immenses, et chaînes très longues.
| 1 | DATA 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 | ; |
| 15 | RUN; |
| 1 | PROC 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}; |
| 11 | RUN; |
| 12 | QUIT; |
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.