Scénario de test & Cas d'usage
Laden, Speichern und Verwalten von Tabellen im Arbeitsspeicher.
Entdecken Sie alle Aktionen von tableErstellt eine große Quelltabelle 'Stundenprotokoll' mit 1 Million Einträgen, um eine hohe Datenmenge zu simulieren, und eine leere In-Memory-Zieltabelle 'Tagesprotokoll_Zentral'.
| 1 | DATA casuser.Stundenprotokoll; |
| 2 | DO i = 1 to 1000000; |
| 3 | timestamp = datetime(); |
| 4 | serverID = 'WEB_SRV_0'||mod(i, 4); |
| 5 | statusCode = 200; |
| 6 | IF mod(i, 100) = 0 THEN statusCode = 503; |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | RUN; |
| 10 | |
| 11 | DATA casuser.Tagesprotokoll_Zentral; |
| 12 | stop; |
| 13 | LENGTH timestamp 8 serverID $ 12 statusCode 8; |
| 14 | RUN; |
| 1 | PROC CAS; |
| 2 | TABLE.loadTable / |
| 3 | caslib='casuser' |
| 4 | path='Tagesprotokoll_Zentral.sashdat' |
| 5 | casOut={name='tagesprotokoll_in_memory', replace=true}; |
| 6 | RUN; |
| 1 | PROC CAS; |
| 2 | TABLE.append / |
| 3 | SOURCE={name='Stundenprotokoll', caslib='casuser', singlePass=TRUE} |
| 4 | target='tagesprotokoll_in_memory'; |
| 5 | RUN; |
| 1 | |
| 2 | PROC CAS; |
| 3 | TABLE.numRows / TABLE='tagesprotokoll_in_memory'; |
| 4 | RUN; |
| 5 |
Die Aktion wird effizient ausgeführt, ohne eine transiente Kopie der Daten auf dem Server zu erstellen. Die Zieltabelle 'tagesprotokoll_in_memory' enthält nun genau 1.000.000 Zeilen aus der Quelltabelle 'Stundenprotokoll'. Die Leistung ist im Vergleich zu einer Ausführung mit 'singlePass=FALSE' (Standard) spürbar besser.