proc sql vs data step

Con frecuencia trabajando con SAS nos planteamos la diferencia entre usar el procedimiento proc sql frente a un paso data (data step). Existen importantes diferencias en su plan de ejecución y es conveniente conocer cuál es más apropiado para cada caso.

El  paso data se ejecuta registro a registro utilizando el PDV (program data vector) , utiliza un buffer de entrada y de salida desde donde escribe a la tabla de salida.

Fuente: www.sas.com

En el proc sql primero se ejecuta el optimizador de queries, después de sube la tabla a memoria y después se realizan los cálculos sobre la tabla completa. El resultado se escribe en la tabla de salida

Fuente: www.sas.com

Es habitual plantearse en qué casos utilizar un proc sql y en qué casos utilizar un paso data. No existe una regla general, pero si existen casos en los que uno puede ser más eficiente que el otro.

PASO DATA:

  •  Pasos que generan múltiples tablas de salida
  •  Pasos de lectura de fichero externo
  •  Pasos que precisan operaciones por grupo (first, last) u operaciones en primera fila (_N_)
  •  Pasos con muchos campos calculados o lógica de negocio compleja
  •  Procesado de tablas grandes
  •  Pasos que precisen uso de arrays
  •  Pasos que precisan de una salida selectiva (if + output)

 PROC SQL:

  •  Cuando se necesiten generar un proceso “transportable“ o en un lenguaje más genérico
  •  Pasos conoperaciones de joins, salvo masivos (hash o format) o varias tablas de salidas (merge)
  •  Pasos que precisen de acceder directamente a BBDD
  •  Pasos que acceden a tablas del diccionario
  •  Procesado de tablas pequeñas

https://online.datademy.es/course/sas/

Share

Deja un comentario