La acción `attribute` del conjunto de acciones `table` se utiliza para gestionar los atributos extendidos de una tabla en memoria en CAS. Estos atributos son metadatos adicionales, en formato de pares clave-valor, que se pueden asociar tanto a una tabla completa como a columnas específicas dentro de esa tabla. Permite añadir, actualizar, eliminar y exportar estos atributos, proporcionando una forma flexible de almacenar información contextual o de linaje directamente con los datos.
| Parámetro | Descripción |
|---|---|
| attributes | Especifica los atributos extendidos a gestionar. Debe especificar el parámetro `set` si utiliza este parámetro. |
| column | Dentro de un bloque `attributes`, especifica el nombre de una columna para asociar el atributo. Si se omite, el atributo se aplica a nivel de tabla. |
| key | Dentro de un bloque `attributes`, especifica el nombre de la clave para el atributo. Es un parámetro obligatorio dentro de `attributes`. |
| value | Dentro de un bloque `attributes`, especifica el valor para la clave del atributo. |
| caslib | Especifica la caslib donde se encuentra la tabla de destino. |
| name | Especifica el nombre de la tabla en memoria cuyos atributos se van a gestionar. Es un parámetro obligatorio. |
| set | Especifica el nombre del conjunto de atributos. Un conjunto es un agrupamiento lógico de varios atributos. |
| table | Especifica el nombre de una tabla de atributos extendidos existente para usar con las tareas ADD, UPDATE o CONVERT. Para CONVERT, este parámetro nombra la tabla a usar para almacenar los atributos extendidos. |
| task | Especifica la tarea a realizar. Los valores posibles son ADD (añadir), CONVERT (convertir), DROP (eliminar), EXPORT (exportar) o UPDATE (actualizar). El valor predeterminado es ADD. |
| xml | Especifica los atributos extendidos como un documento XML en una cadena de texto. |
| xmlPath | Especifica la ruta en el servidor a un archivo que contiene los atributos extendidos en formato XML. |
Este bloque de código DATA step crea una tabla simple llamada `CARS_ATTRIBUTES` en la caslib `casuser`. Esta tabla contiene información sobre diferentes modelos de coches y se utilizará en los ejemplos para demostrar cómo gestionar sus atributos extendidos.
| 1 | DATA casuser.CARS_ATTRIBUTES; |
| 2 | LENGTH Make Model Type $10; |
| 3 | INFILE DATALINES delimiter=','; |
| 4 | INPUT Make $ Model $ Type $ Origin $ MSRP; |
| 5 | DATALINES; |
| 6 | Acura,MDX,SUV,Asia,36945 |
| 7 | Acura,RSX,Sedan,Asia,23820 |
| 8 | Audi,A4,Sedan,Europe,25940 |
| 9 | BMW,325i,Sedan,Europe,28495 |
| 10 | Chevrolet,Corvette,Sports,USA,44635 |
| 11 | Ford,Mustang,Sports,USA,24495 |
| 12 | ; |
| 13 | RUN; |
Este ejemplo añade un único atributo llamado 'DataOwner' con el valor 'SalesDept' a un nuevo conjunto de atributos llamado 'Ownership' para la tabla `CARS_ATTRIBUTES`.
| 1 | PROC CAS; |
| 2 | TABLE.attribute / |
| 3 | name="CARS_ATTRIBUTES", |
| 4 | caslib="casuser", |
| 5 | SET="Ownership", |
| 6 | attributes={{key="DataOwner", value="SalesDept"}}; |
| 7 | RUN; QUIT; |
Este ejemplo muestra cómo eliminar completamente el conjunto de atributos 'Ownership' y todos los pares clave-valor que contiene de la tabla `CARS_ATTRIBUTES`.
| 1 | PROC CAS; |
| 2 | TABLE.attribute / |
| 3 | task="DROP", |
| 4 | name="CARS_ATTRIBUTES", |
| 5 | caslib="casuser", |
| 6 | SET="Ownership"; |
| 7 | RUN; QUIT; |
Este ejemplo realiza varias operaciones: primero, añade dos atributos ('Confidentiality' y 'UpdateDate') a un conjunto llamado 'Metadata'. Luego, en una segunda llamada, actualiza el valor de 'UpdateDate' y añade un nuevo atributo específico para la columna 'MSRP' para documentar su moneda.
| 1 | PROC CAS; |
| 2 | /* Añadir atributos iniciales */ |
| 3 | TABLE.attribute / |
| 4 | name="CARS_ATTRIBUTES", caslib="casuser", SET="Metadata", |
| 5 | attributes={ {key="Confidentiality", value="Internal"}, {key="UpdateDate", value="2024-01-15"} }; |
| 6 | |
| 7 | /* Actualizar un atributo y añadir uno nuevo a una columna */ |
| 8 | TABLE.attribute / |
| 9 | task="UPDATE", |
| 10 | name="CARS_ATTRIBUTES", caslib="casuser", SET="Metadata", |
| 11 | attributes={ {key="UpdateDate", value="2025-11-25"}, {key="Currency", column="MSRP", value="USD"} }; |
| 12 | RUN; QUIT; |
Este ejemplo exporta todos los atributos contenidos en el conjunto 'Metadata' de la tabla `CARS_ATTRIBUTES` a un archivo XML. La ruta especificada en `xmlPath` debe ser accesible desde el servidor CAS.
| 1 | PROC CAS; |
| 2 | TABLE.attribute / |
| 3 | task="EXPORT", |
| 4 | name="CARS_ATTRIBUTES", |
| 5 | caslib="casuser", |
| 6 | SET="Metadata", |
| 7 | xmlPath="/cas/data/shared/cars_metadata.xml"; |
| 8 | RUN; QUIT; |
Suponiendo que el archivo `cars_metadata.xml` del ejemplo anterior existe, este ejemplo utiliza la tarea `ADD` con el parámetro `xmlPath` para leer los atributos del archivo y añadirlos a un nuevo conjunto de atributos llamado 'MetadataFromFile' en la misma tabla.
| 1 | PROC CAS; |
| 2 | TABLE.attribute / |
| 3 | task="ADD", |
| 4 | name="CARS_ATTRIBUTES", |
| 5 | caslib="casuser", |
| 6 | SET="MetadataFromFile", |
| 7 | xmlPath="/cas/data/shared/cars_metadata.xml"; |
| 8 | RUN; QUIT; |
Una entidad financiera necesita documentar el linaje y la calidad de su tabla principal de clientes (CLIENTES_RIESGO) para cumplir con normativas de auditoría. Se requiere regis...
Una empresa de retail gestiona un catálogo de miles de productos. Diariamente, un sistema externo genera un archivo XML con metadatos actualizados (descripciones, estado de inve...
Un analista de datos junior está aprendiendo a usar la acción 'attribute' y comete errores comunes. Este escenario prueba la robustez de la acción frente a entradas incorrectas ...