aggregation aggregate

Agregación de Alto Volumen de Datos Financieros (OHLC)

Scénario de test & Cas d'usage

Contexto empresarial

Una firma de análisis financiero necesita procesar un gran volumen de datos de transacciones de acciones (tick data) para construir gráficos de velas (OHLC - Open, High, Low, Close) en intervalos de un minuto. La prueba debe validar la capacidad de la acción para manejar millones de registros de manera eficiente y para usar agregadores específicos de series temporales como FIRST y LAST.
Sobre el conjunto : aggregation

Agregación de datos y cálculos estadísticos resumidos.

Descubrir todas las acciones de aggregation
Preparación de datos

Creación de una tabla de gran volumen (1 millón de filas) que simula datos de transacciones de acciones para dos tickers diferentes.

¡Copiado!
1DATA casuser.TICK_DATA;
2 FORMAT Timestamp_Trade datetime20.;
3 DO Ticker = 'SAS', 'ACME';
4 Precio = 100;
5 DO i = 1 to 500000;
6 Timestamp_Trade = dhms(today(), 9, 0, 0) + i*0.05 + rand('UNIFORM')*0.01;
7 Precio = Precio + rand('NORMAL', 0, 0.1);
8 OUTPUT;
9 END;
10 END;
11RUN;

Étapes de réalisation

1
Cargar la tabla de gran volumen en CAS.
¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=casuser.TICK_DATA casout='TICK_DATA' caslib='casuser' replace;
5QUIT;
6 
2
Ejecutar la agregación para construir las barras OHLC de un minuto, usando `edgeId` para asegurar el orden correcto para FIRST y LAST.
¡Copiado!
1PROC CAS;
2 aggregation.aggregate /
3 TABLE={name='TICK_DATA', groupBy={'Ticker'}},
4 id='Timestamp_Trade',
5 edgeId='Timestamp_Trade',
6 interval='MINUTE',
7 casOut={name='OHLC_1MIN', caslib='casuser', replace=true},
8 varSpecs=[
9 {name='Precio', agg='FIRST', newName='Open'},
10 {name='Precio', agg='MAX', newName='High'},
11 {name='Precio', agg='MIN', newName='Low'},
12 {name='Precio', agg='LAST', newName='Close'},
13 {name='Precio', agg='N', newName='Volume'}
14 ];
15RUN;
16QUIT;
3
Verificar una muestra de los resultados OHLC generados.
¡Copiado!
1 
2PROC PRINT
3DATA=casuser.OHLC_1MIN(obs=20);
4where Ticker='SAS';
5RUN;
6 

Resultado esperado


La acción debe procesar el millón de registros y producir una tabla 'OHLC_1MIN'. Cada fila representará un intervalo de un minuto para un 'Ticker' específico. Las columnas 'Open', 'High', 'Low' y 'Close' deben reflejar correctamente el primer precio, el máximo, el mínimo y el último precio dentro de ese minuto, validando el uso de los agregadores FIRST/LAST/MAX/MIN en un contexto de alto rendimiento.