La acción `table.update` del conjunto de acciones 'table' se utiliza para modificar los datos de una tabla CAS en memoria. Es particularmente útil para operaciones de actualización transaccional o masiva. Las actualizaciones se pueden realizar en toda la tabla o en un subconjunto de filas especificado por una cláusula WHERE. Los nuevos valores de las columnas pueden ser constantes literales, expresiones basadas en otras columnas de la tabla, o una combinación de ambas. Es importante tener en cuenta que los valores literales de tipo carácter (como 'Sport Sedan' o '31,000') se convierten automáticamente si la columna de destino tiene un tipo numérico compatible.
Análisis de datos
Type : CREATION_INTERNE
Los ejemplos utilizan datos generados (datalines) o SASHELP, luego cargados en CAS para su manipulación.
1 Bloque de código
PROC CAS / DATA step Data
Explicación : Este ejemplo inicializa una tabla `produits` en memoria CAS. Luego, utiliza la acción `table.update` para aumentar el 'Precio' de todos los productos en un 5%. La acción `table.fetch` muestra los resultados de la actualización.
Explicación : Este ejemplo actualiza los productos cuyo 'Estado' es 'Ruptura'. Para estos productos, el 'Precio' se reduce en un 10% y el 'Estado' se cambia a 'EnStock'. Esto demuestra una actualización condicional en varias columnas.
Explicación : Este ejemplo utiliza macro-variables para hacer la actualización más dinámica. Los productos de una categoría específica (aquí 'Electronique') ven su precio aumentado en un 15% y su 'NomProduit' es prefijado por 'MAJ-'. Esto ilustra el uso de expresiones complejas y macro-variables.
TABLE.fetch / TABLE='produits' / to=100; /* Fetch toutes les lignes pour vérification */
15
QUIT;
4 Bloque de código
PROC CAS Data
Explicación : Este escenario muestra cómo la acción `table.update` puede usarse para validaciones. El primer bloque intenta actualizar un producto inexistente, demostrando el manejo de devoluciones. El segundo bloque actualiza el estado de los productos cuyo stock es menor o igual a 10, cambiando el valor numérico 'Stock' a una cadena de caracteres 'Faible'. Esto ilustra el uso de la función `input` para la conversión de tipo en la cláusula `where`.
¡Copiado!
data mycas.stock_produits;
length NomProduit $30 Stock Initial $10;
input NomProduit Stock $;
datalines;
Ordinateur Portable 10
Smartphone 50
Souris 200
Clavier 0
Ecran 30
Tablette 5
;
run;
proc cas;
session casauto;
table.promote / caslib='mycas' name='stock_produits';
/* Tentative de mise à jour pour un produit non existant */
r = table.update {
table='produits',
where="NomProduit = 'ProduitInexistant'",
set={
{var='Prix', value='Prix + 100'}
}
};
print r;
/* Mise à jour conditionnelle avec vérification de stock */
r = table.update {
table='stock_produits',
where="input(Stock, ?? best.) <= 10",
set={
{var='Stock', value="'Faible'"}
}
};
print r;
table.fetch / table='stock_produits';
quit;
/* Tentative de mise à jour pour un produit non existant */
19
r = TABLE.update {
20
TABLE='produits',
21
where="NomProduit = 'ProduitInexistant'",
22
SET={
23
{var='Prix', value='Prix + 100'}
24
}
25
};
26
PRINT r;
27
28
/* Mise à jour conditionnelle avec vérification de stock */
29
r = TABLE.update {
30
TABLE='stock_produits',
31
where="input(Stock, ?? best.) <= 10",
32
SET={
33
{var='Stock', value="'Faible'"}
34
}
35
};
36
PRINT r;
37
TABLE.fetch / TABLE='stock_produits';
38
QUIT;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.