SAS9

Cómo copiar la estructura de una tabla sin los datos?

Simon 10 views

En la gestión diaria de datos con SAS©, es frecuente que se necesite duplicar una tabla existente. Pero, ¿qué hacer si solo quieres el "esqueleto" de la tabla (las variables, los formatos, los tipos) sin importar los miles o millones de líneas que contiene?

Ya sea para crear un modelo vacío para una nueva entrada o para inicializar una tabla de archivo, aquí tienes el método más simple y eficaz para copiar la estructura de una tabla de una biblioteca a otra.

Note :
El método más elegante en SAS© Base se basa en el uso del paso DATA combinado con la instrucción STOP.
1DATA ma_lib.nouvelle_table;
2 SET autre_lib.ancienne_table;
3 STOP;
4RUN;
Note :
Imaginemos que tienes una tabla VENTES_2023 en la biblioteca PROD y quieres crear una estructura vacía VENTES_2024 en tu biblioteca WORK
1DATA work.ventes_2024;
2 SET prod.ventes_2023;
3 STOP;
4RUN;
Resultado: Obtendrás una tabla work.ventes_2024 que contiene exactamente las mismas columnas que la original, pero estará completamente vacía.

¿Por qué funciona esto?

Para entender este truco, hay que mirar bajo el capó del motor SAS©:

  1. La instrucción SET: En el momento de la compilación, SAS© lee el descriptor de la tabla fuente (prod.ventes_2023). Prepara el "Vector de Datos del Programa" (PDV) con todas las variables y sus atributos. Así, la estructura está lista.

  2. La instrucción STOP: Normalmente, el paso DATA funciona como un bucle implícito que lee las líneas una por una. La instrucción STOP fuerza la detención inmediata del paso DATA antes incluso de que la primera línea de datos se cargue en el PDV y se escriba en la tabla de salida.

Es esta interrupción inmediata la que permite guardar la estructura (definida en la compilación) sin procesar nunca los datos (ejecución).

La próxima vez que necesites un modelo de tabla vacío, recuerda: ¡un simple STOP es suficiente!