Veröffentlicht am :
ETL CREATION_INTERNE

Zeilen in einer CAS-Tabelle aktualisieren

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die Aktion `table.update` aus dem 'table'-Aktionssatz wird verwendet, um Daten einer CAS-Tabelle im Speicher zu ändern. Sie ist besonders nützlich für transaktionale oder Massenaktualisierungen. Aktualisierungen können auf die gesamte Tabelle oder auf eine durch eine WHERE-Klausel spezifizierte Untermenge von Zeilen angewendet werden. Die neuen Spaltenwerte können literale Konstanten, Ausdrücke basierend auf anderen Spalten der Tabelle oder eine Kombination aus beidem sein. Es ist wichtig zu beachten, dass literale Zeichenwerte (wie 'Sport Sedan' oder '31,000') automatisch konvertiert werden, wenn die Zielspalte einen kompatiblen numerischen Typ hat.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP, die dann zur Bearbeitung nach CAS hochgeladen werden.

1 Codeblock
PROC CAS / DATA step Data
Erklärung :
Dieses Beispiel initialisiert eine `produits`-Tabelle im CAS-Speicher. Anschließend wird die Aktion `table.update` verwendet, um den 'Prix' aller Produkte um 5% zu erhöhen. Die Aktion `table.fetch` zeigt die Aktualisierungsergebnisse an.
Kopiert!
1DATA mycas.produits;
2 LENGTH NomProduit $30 Categorie $20 Statut $10;
3 INPUT NomProduit Categorie Prix Statut $;
4 DATALINES;
5Ordinateur Portable Electronique 1200 EnStock
6Smartphone Electronique 800 EnStock
7Souris Accessoire 25 EnStock
8Clavier Accessoire 75 Rupture
9Ecran Electronique 300 EnStock
10Tablette Electronique 500 EnStock
11;
12RUN;
13 
14PROC CAS;
15 SESSION casauto;
16 TABLE.promote / caslib='mycas' name='produits';
17 TABLE.update /
18 TABLE='produits',
19 SET={
20 {var='Prix', value='Prix * 1.05'}
21 };
22 TABLE.fetch / TABLE='produits';
23QUIT;
2 Codeblock
PROC CAS
Erklärung :
Dieses Beispiel aktualisiert Produkte, deren 'Statut' 'Rupture' ist. Für diese Produkte wird der 'Prix' um 10% reduziert und der 'Statut' auf 'EnStock' geändert. Dies zeigt eine bedingte Aktualisierung über mehrere Spalten hinweg.
Kopiert!
1PROC CAS;
2 SESSION casauto;
3 
4 TABLE.update /
5 TABLE='produits',
6 where="Statut = 'Rupture'",
7 SET={
8 {var='Prix', value='Prix * 0.90'},
9 {var='Statut', value="'EnStock'"}
10 };
11 TABLE.fetch / TABLE='produits';
12QUIT;
3 Codeblock
PROC CAS / %LET
Erklärung :
Dieses Beispiel verwendet Makrovariablen, um die Aktualisierung dynamischer zu gestalten. Produkte einer spezifischen Kategorie (hier 'Electronique') erfahren eine Preiserhöhung von 15%, und ihr 'NomProduit' wird mit 'MAJ-' präfigiert. Dies veranschaulicht die Verwendung komplexer Ausdrücke und Makrovariablen.
Kopiert!
1%let CATEGORIE_CIBLE = 'Electronique';
2%let POURCENTAGE_AUGMENTATION = 1.15;
3 
4PROC CAS;
5 SESSION casauto;
6 
7 TABLE.update /
8 TABLE='produits',
9 where="Categorie = &CATEGORIE_CIBLE.",
10 SET={
11 {var='Prix', value="Prix * &POURCENTAGE_AUGMENTATION."},
12 {var='NomProduit', value="'MAJ-' || NomProduit"}
13 };
14 TABLE.fetch / TABLE='produits' / to=100; /* Fetch toutes les lignes pour vérification */
15QUIT;
4 Codeblock
PROC CAS Data
Erklärung :
Dieses Szenario zeigt, wie die Aktion `table.update` für Validierungen verwendet werden kann. Der erste Block versucht, ein nicht existierendes Produkt zu aktualisieren, was die Rückgabebehandlung demonstriert. Der zweite Block aktualisiert den Status von Produkten, deren Lagerbestand kleiner oder gleich 10 ist, und ändert den numerischen Wert 'Stock' in die Zeichenkette 'Faible'. Dies veranschaulicht die Verwendung der Funktion `input` für die Typumwandlung in der `where`-Klausel.
Kopiert!
1DATA mycas.stock_produits;
2 LENGTH NomProduit $30 Stock Initial $10;
3 INPUT NomProduit Stock $;
4 DATALINES;
5Ordinateur Portable 10
6Smartphone 50
7Souris 200
8Clavier 0
9Ecran 30
10Tablette 5
11;
12RUN;
13 
14PROC CAS;
15 SESSION casauto;
16 TABLE.promote / caslib='mycas' name='stock_produits';
17
18 /* 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';
38QUIT;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved