?>Array ( [id] => 204 )
Scénario de test & Cas d'usage
Erstellt eine große, sortierte Tabelle von Finanztransaktionen, die Kunden-ID, Transaktionszeit und Betrag enthält, um eine performante rollierende Fensteraggregation zu simulieren.
| 1 | DATA mycas.finanz_transaktionen (keep=Kunden_ID Transaktions_Zeit Betrag); |
| 2 | FORMAT Transaktions_Zeit DATETIME20.; |
| 3 | DO Kunden_ID = 1 to 100; |
| 4 | DO i = 1 to 100; |
| 5 | Transaktions_Zeit = '25NOV2025:12:00:00'dt + (i * 30) + rand('UNIFORM')*20; |
| 6 | Betrag = 10 + rand('UNIFORM') * 500; |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | END; |
| 10 | RUN; |
| 1 | /* Daten bereits in mycas.finanz_transaktionen geladen */ |
| 1 | PROC CAS; |
| 2 | aggregation.aggregate / |
| 3 | TABLE={name='finanz_transaktionen', groupBy={'Kunden_ID'}, orderBy={'Transaktions_Zeit'}}, |
| 4 | id='Transaktions_Zeit', |
| 5 | interval='SECOND', |
| 6 | windowInt='MINUTE30', |
| 7 | doESP=true, |
| 8 | casOut={name='rolling_fraud_score', replace=true}, |
| 9 | varSpecs=[ |
| 10 | {name='Betrag', agg='SUM'} |
| 11 | ]; |
| 12 | RUN; |
Die Ausgabetabelle 'rolling_fraud_score' enthält für jede ursprüngliche Transaktion eine neue Spalte 'Betrag_SUM'. Dieser Wert stellt die Summe aller Transaktionsbeträge für denselben Kunden in den vorangegangenen 30 Minuten (einschließlich der aktuellen Transaktion) dar. Die Verarbeitung sollte aufgrund der Nutzung von 'doESP' auf den sortierten Daten effizient sein.