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 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', rename='PRODUCTOS'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Este ejemplo añade una etiqueta descriptiva a la tabla 'MI_TABLA'.
| 1 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', label='Inventario de Productos Electrónicos'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Este ejemplo elimina la columna 'Stock' de la tabla 'MI_TABLA'.
| 1 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', drop={'Stock'}}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
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 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', columns={{name='ID_Producto', rename='SKU'}, {name='Precio', FORMAT='EURO10.2'}, {name='Stock', label='Unidades Disponibles'}}}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
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 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', keep={'ID_Producto', 'Nombre_Producto', 'Precio'}, columnOrder={'Precio', 'ID_Producto', 'Nombre_Producto'}}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
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 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', columns={{name='ID_Producto', newType='VARCHAR'}}}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
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 | |
| 2 | PROC CAS; |
| 3 | TABLE.alterTable{caslib='CASUSER', name='MI_TABLA', rename='INVENTARIO_ACTUAL', columns={{name='Nombre_Producto', rename='Descripcion_Producto'}}, drop={'Stock'}}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Un equipo de marketing necesita limpiar y estandarizar una tabla de clientes antes de importarla a su herramienta de gestión de campañas. El objetivo es renombrar columnas para ...
Una empresa de IoT necesita archivar datos de sensores. La tabla original es muy ancha y contiene muchas métricas. Para optimizar el almacenamiento y el rendimiento de las consu...
Un analista de datos recibe un conjunto de datos de transacciones de una fuente externa. Los datos son inconsistentes: los nombres de las columnas usan mayúsculas y minúsculas d...