En el universo SAS©, es común tener que consolidar datos históricos almacenados en una misma librería. Si la operación es trivial con nombres de archivo estandarizados (ej: DATA_202301, DATA_202302), se vuelve peligrosa cuando los archivos provienen de importaciones de Excel o de sistemas heredados que utilizan espacios, símbolos ($, &) o formatos de "texto libre".
Este artículo le muestra cómo concatenar dinámicamente todo el contenido de una librería, incluso cuando los nombres de las tablas parecen imposibles de manejar por programación.
Tomemos el ejemplo de una librería llamada RH_ARCHIVE. Contiene exportaciones mensuales nombradas de manera muy literal, incluyendo espacios y caracteres especiales:
Si intenta un enfoque clásico recuperando la lista de tablas a través de dictionary.tables para inyectarla en un paso DATA, SAS© fallará.
¿Por qué? Porque SAS© interpreta 'MARS 2024 & PRIMES' como tres objetos distintos (MARS, 2024, &, PRIMES). Además, sin una referencia explícita a la librería, buscará estas tablas en WORK.
Inevitablemente obtendrá el error:
Para manipular estas tablas, SAS© requiere una sintaxis precisa llamada "Name Literal" (literal de nombre), que se ve así: 'Nombre de la tabla'n. También es imperativo prefijar el nombre de la librería.
En lugar de escribir el código a mano para cada archivo, vamos a utilizar PROC SQL para generar la sintaxis exacta.
El Código Optimizado
El objetivo es construir una cadena de caracteres que se parezca a:
RH_ARCHIVE.'JANVIER 2024 STAFFING$'n
Aquí está el código para automatizar esto a través de la función CATT:
quote(MEMNAME): Esta función rodea el nombre recuperado (ej: MARS 2024 & PRIMES) con comillas dobles. Esto "protege" los espacios y los caracteres especiales.
'n': Al pegar este sufijo después de las comillas, se indica al motor de SAS© que no es una cadena de texto, sino un nombre de tabla válido (un literal).
'RH_ARCHIVE.': Forzamos la ubicación de la fuente. Sin esto, SAS© no encontraría el archivo físico.
Esta técnica es universal: funciona sin importar la "limpieza" de los nombres de sus archivos de origen. Sin embargo, para sus futuras tablas, prefiera siempre la norma estándar de SAS© (sin espacios, uso del guion bajo _, sin caracteres especiales) para facilitar el mantenimiento de sus programas.