CAS

Por qué (y cómo) CAS supera el rendimiento tradicional

Simon 24/03/2021 3 vues

La inercia es un fenómeno poderoso. Incluso entre los usuarios más fervientes de SAS©, la adopción de CAS (Cloud Analytic Services), el motor en memoria de SAS© Viya, a veces genera reticencias. ¿Por qué cambiar una receta que funciona (Paso DATA, PROC SQL) por un nuevo paradigma?

La respuesta se resume en una palabra: Velocidad.

Para convencer a los "verdaderos creyentes" de SAS© que dudan en dar el paso, nada mejor que una demostración con pruebas. Hemos comparado el rendimiento del motor SAS© tradicional (Base SAS©) frente a las CAS Actions en tareas comunes de manipulación de datos.

Nota: Las siguientes pruebas se realizaron en un conjunto de datos de 160 millones de filas, alojado en una modesta arquitectura virtual (5 nodos).

Note :
1. Agregación (Group By): Baja Cardinalidad
Cuando necesita sumar variables según algunos grupos (ej: Tipo de instalación y Línea de producto), el reflejo es usar PROC MEANS o PROC SUMMARY. En CAS, el equivalente optimizado es la acción simple.summary.

La Prueba:

Datos: 160 millones de filas.

Grupos: 8 combinaciones únicas (baja cardinalidad).

El Código Comparado:

SAS© Clásico:
1PROC MEANS DATA=mega_corp NOPRINT;
2 VAR revenue expenses;
3 CLASS facilityType productline;
4 OUTPUT OUT=summaryMC SUM=;
5RUN;
Note :
CAS (Acción simple.summary):
1PROC CAS;
2 SIMPLE.summary /
3 inputs={"revenue","expenses"},
4 subSet={"SUM"},
5 TABLE={name="mega_corp", groupBy={"facilityType","productline"}},
6 casout={name="summaryMC", replace=True};
7QUIT;
Résultat SAS
Ganancia: CAS es aproximadamente 20 veces más rápido.

2. Agregación: Alta Cardinalidad

Una crítica común (y a menudo anticuada) sugiere que los motores en memoria sufren cuando el número de grupos explota. Verifiquemos esto aumentando la complejidad.

La Prueba:

  • Datos: 160 millones de filas.

  • Grupos: 88.000 combinaciones únicas (ID de producto, fecha, unidad).

Illustration

3. La Deduplicación (Eliminación de duplicados)

Eliminar duplicados es una tarea pesada que a menudo implica una clasificación costosa. En SAS© clásico, es el dominio de PROC SORT con la opción NODUPKEY. En CAS, la acción recomendada para esta tarea ha evolucionado (ver nota técnica a continuación), pero el principio sigue siendo la agrupación eficiente.

La Prueba:

  • Tarea: Conservar una línea única para cada combinación (Producto, Fecha, Unidad).

  • Claves únicas: 88.000.

Illustration

4. Nota Técnica Importante: La evolución hacia deduplication.deduplicate

Las técnicas evolucionan con las versiones de Viya. Aunque la acción simple.groupBy es muy potente, SAS© Viya ha introducido una acción especializada: deduplication.deduplicate.

¿La buena noticia? No siempre necesita reaprender la sintaxis. Si sus datos de origen y destino están en CAS, el uso de su antiguo y confiable PROC SORT NODUPKEY a menudo será traducido automáticamente por SAS© a la acción deduplication.deduplicate optimizada. Usted mantiene la sintaxis simple, y SAS© se encarga del rendimiento.

El salto a CAS requiere un esfuerzo de aprendizaje, especialmente para dominar el lenguaje CASL y las CAS Actions. Sin embargo, para cualquiera que procese grandes volúmenes de datos (Big Data), el retorno de la inversión en términos de tiempo de procesamiento es inmediato y espectacular.