Scénario de test & Cas d'usage
Chargement, sauvegarde et gestion des tables en mémoire.
Découvrir toutes les actions de tableCréation d'une table volumineuse 'APP_LOGS_HUGE' avec 2 millions de lignes et plusieurs colonnes.
| 1 | DATA casuser.APP_LOGS_HUGE; |
| 2 | LENGTH Host $20 Message $100; |
| 3 | DO i = 1 to 2000000; |
| 4 | Timestamp = datetime(); |
| 5 | Host = 'server' || put(mod(i, 10), 1.); |
| 6 | LogLevel = ceil(4 * ranuni(123)); /* 1=INFO, 2=WARN, 3=ERROR, 4=FATAL */ |
| 7 | Message = 'Processing request ' || put(i, 8.); |
| 8 | ThreadID = 'thread-' || put(mod(i, 50), 2.); |
| 9 | ResponseTime_ms = 10 + 500 * ranuni(123); |
| 10 | OUTPUT; |
| 11 | END; |
| 12 | drop i; |
| 13 | RUN; |
| 1 | PROC CASUTIL; |
| 2 | load DATA=casuser.APP_LOGS_HUGE outcaslib="casuser" casout="APP_LOGS_HUGE" replace; |
| 3 | RUN; |
| 4 | QUIT; |
| 1 | PROC CAS; |
| 2 | TABLE.alterTable / |
| 3 | caslib="casuser", |
| 4 | name="APP_LOGS_HUGE", |
| 5 | keep={"Timestamp", "Host", "LogLevel", "Message"}, |
| 6 | lifetime=3600; /* Expiration après 1 heure d'inactivité */ |
| 7 | RUN; |
| 8 | QUIT; |
| 1 | PROC CAS; |
| 2 | TABLE.columnInfo / TABLE={caslib="casuser", name="APP_LOGS_HUGE"}; |
| 3 | RUN; |
| 4 | QUIT; |
L'action s'exécute rapidement malgré la volumétrie. La table 'APP_LOGS_HUGE' ne contient plus que les 4 colonnes 'Timestamp', 'Host', 'LogLevel' et 'Message'. Sa taille en mémoire est significativement réduite. Les métadonnées de la table indiquent une durée de vie de 3600 secondes. Si la table n'est pas accédée pendant une heure, un appel à `table.tableInfo` ne la listerait plus.