?>
La acción `alterTable` del conjunto de acciones `table` en SAS Viya permite modificar los metadatos de una tabla en memoria de CAS. Es una herramienta fundamental para la gestión de datos, ya que permite renombrar tablas, cambiar etiquetas y formatos de columnas, eliminar columnas y reordenarlas sin necesidad de recrear la tabla. Esto es especialmente útil para limpiar y preparar datos antes del análisis.
| Parámetro | Descripción |
|---|---|
| caslib | Especifica la caslib de la tabla de entrada que se desea utilizar con la acción. Por defecto, se utiliza la caslib activa. |
| columnOrder | Especifica el nuevo orden de las columnas en los metadatos de la tabla. |
| columns | Especifica una lista de diccionarios, donde cada uno detalla las modificaciones para una columna específica (eliminar, renombrar, cambiar formato o etiqueta). |
| drop | Especifica una lista de columnas a eliminar de la tabla. |
| keep | Especifica una lista de columnas a mantener en la tabla, eliminando todas las demás. |
| label | Asigna una nueva etiqueta descriptiva a la tabla. |
| lifetime | Especifica el número de segundos que la tabla se mantendrá en memoria después de su último acceso. La tabla se elimina si no se accede a ella durante el número de segundos especificado. |
| name | Especifica el nombre de la tabla en memoria que se va a modificar. |
| rename | Especifica un nuevo nombre para la tabla en memoria. |
| tableRedistUpPolicy | Especifica la política de redistribución de la tabla cuando el número de nodos trabajadores aumenta en un servidor CAS en ejecución. |
Este código crea una tabla en memoria llamada 'MI_TABLA' en la caslib 'CASUSER'. Esta tabla contiene información sobre productos, incluyendo su ID, nombre, precio y stock. Se utilizará como base para los siguientes ejemplos de la acción `alterTable`.
1 PROC CAS; 2 datastep.runCode{ 3 code='data CASUSER.MI_TABLA; 4 length ID_Producto $ 10 Nombre_Producto $ 50; 5 label ID_Producto="ID del Producto" 6 Nombre_Producto="Nombre del Producto" 7 Precio="Precio Unitario" 8 Stock="Cantidad en Stock"; 9 format Precio dollar8.2; 10 infile datalines delimiter=","; 11 input ID_Producto $ Nombre_Producto $ Precio Stock; 12 datalines; 13 PROD001,Laptop,1200.50,50 14 PROD002,Smartphone,800.75,150 15 PROD003,Tablet,450.00,200 16 PROD004,Monitor,300.25,80 17 ; 18 run;' 19 }; 20 QUIT;
Este ejemplo cambia el nombre de la tabla en memoria 'MI_TABLA' a 'PRODUCTOS'.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', rename='PRODUCTOS'}; RUN; QUIT; |
Este ejemplo añade una etiqueta descriptiva a la tabla 'MI_TABLA'.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', label='Inventario de Productos Electrónicos'}; RUN; QUIT; |
Este ejemplo elimina la columna 'Stock' de la tabla 'MI_TABLA'.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', drop={'Stock'}}; RUN; QUIT; |
Este ejemplo realiza varias modificaciones en una sola llamada: renombra la columna 'ID_Producto' a 'SKU', cambia el formato de la columna 'Precio' y añade una nueva etiqueta a la columna 'Stock'.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', columns={{name='ID_Producto', rename='SKU'}, {name='Precio', FORMAT='EURO10.2'}, {name='Stock', label='Unidades Disponibles'}}}; RUN; QUIT; |
Este ejemplo elimina la columna 'Stock' y luego reordena las columnas restantes para que 'Precio' aparezca primero, seguido de 'ID_Producto' y 'Nombre_Producto'.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', keep={'ID_Producto', 'Nombre_Producto', 'Precio'}, columnOrder={'Precio', 'ID_Producto', 'Nombre_Producto'}}; RUN; QUIT; |
Este ejemplo cambia el tipo de dato de la columna 'ID_Producto' de su tipo original a VARCHAR. Esto puede ser útil para optimizar el almacenamiento o para la compatibilidad con ciertas operaciones de cadena.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', columns={{name='ID_Producto', newType='VARCHAR'}}}; RUN; QUIT; |
Este ejemplo combina el renombrado de la tabla a 'INVENTARIO_ACTUAL' con la modificación de columnas: elimina la columna 'Stock' y renombra 'Nombre_Producto' a 'Descripcion_Producto'.
| 1 | PROC CAS; TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', rename='INVENTARIO_ACTUAL', columns={{name='Nombre_Producto', rename='Descripcion_Producto'}}, drop={'Stock'}}; RUN; QUIT; |