table append

Anexión de Gran Volumen de Datos de Sensores IoT con 'singlePass'

Scénario de test & Cas d'usage

Contexto empresarial

Una empresa de energía necesita procesar grandes volúmenes de datos de sensores de sus turbinas eólicas. Cada hora, se genera una tabla con millones de lecturas. Al final del día, estos datos deben ser consolidados en una única tabla para análisis de rendimiento. Este escenario prueba la eficiencia de 'append' con la opción 'singlePass=TRUE' para minimizar el uso de recursos del servidor CAS en una operación de gran volumen.
Sobre el conjunto : table

Carga, guardado y gestión de tablas en memoria.

Descubrir todas las acciones de table
Preparación de datos

Se crea una tabla de destino 'sensores_diario' y una tabla de origen 'sensores_hora_14' que simula un gran volumen de datos (1 millón de filas).

¡Copiado!
1DATA casuser.sensores_diario (promote=yes);
2 stop;
3RUN;
4 
5DATA casuser.sensores_hora_14;
6 DO ID_TURBINA = 1 to 100;
7 DO i = 1 to 10000;
8 TIMESTAMP = '25NOV2025:14:00:00'dt + i;
9 VELOCIDAD_VIENTO = 15 + rand('normal', 0, 2);
10 PRODUCCION_KWH = 1.5 + rand('normal', 0, 0.3);
11 OUTPUT;
12 END;
13 END;
14RUN;

Étapes de réalisation

1
Cargar la tabla de destino (inicialmente vacía) 'sensores_diario' en memoria.
¡Copiado!
1 
2PROC CAS;
3TABLE.loadTable / caslib='casuser' path='sensores_diario.sashdat' casout={name='sensores_diario', replace=true};
4RUN;
5 
2
Anexar la tabla de gran volumen 'sensores_hora_14' utilizando la opción 'singlePass=TRUE' para optimizar el rendimiento.
¡Copiado!
1PROC CAS;
2 TABLE.append /
3 SOURCE={name='sensores_hora_14', caslib='casuser', singlePass=TRUE},
4 target={name='sensores_diario', caslib='casuser'};
5RUN;
3
Verificar que el número de filas en la tabla de destino es igual al número de filas en la tabla de origen.
¡Copiado!
1 
2PROC CAS;
3TABLE.rowCount / TABLE={name='sensores_diario', caslib='casuser'};
4RUN;
5 

Resultado esperado


La operación de 'append' debe completarse eficientemente. El log de CAS debe indicar que 1,000,000 de filas fueron añadidas. La acción 'rowCount' debe confirmar que la tabla 'sensores_diario' ahora contiene 1,000,000 de filas. El tiempo de ejecución debe ser notablemente rápido, demostrando el beneficio de 'singlePass'.