Veröffentlicht am :
Datenverwaltung CREATION_INTERNE

Kopieren einer CAS-Tabelle

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
Die Aktion 'table.copyTable' aus dem Aktionsset 'table' wird verwendet, um eine CAS-Tabelle im Speicher zu duplizieren. Sie nimmt die Quelltabelle ('table') und die Optionen der Ausgabetabelle ('casOut') als Parameter entgegen. Die 'casOut'-Optionen ermöglichen es, den Namen der neuen Tabelle ('name') zu definieren, anzugeben, ob eine vorhandene Tabelle ersetzt werden soll ('replace'), die Ziel-Caslib ('caslib') zu bestimmen und die globale Sichtbarkeit der Tabelle zu steuern ('promote'). Diese Aktion ist unerlässlich für Datenvorbereitungsvorgänge, das Erstellen von Sicherungen oder das Duplizieren von Tabellen für verschiedene Analysen, ohne das Original zu beeinträchtigen.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden Daten, die direkt über DATA STEP-Blöcke mit 'datalines' oder die von SASHELP bereitgestellte Tabelle 'CARS' generiert und in den CAS-Speicher geladen werden.

1 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses Beispiel zeigt die einfachste Verwendung von 'table.copyTable'. Es erstellt eine kleine lokale SAS-Tabelle, lädt sie in die Standard-CAS-Sitzung ('casauto') und kopiert sie dann unter einem neuen Namen ('produits_copie_basique') in dieselbe Caslib ('CASUSER'). Die Klausel 'replace=TRUE' ermöglicht das Ersetzen der Tabelle, falls sie bereits existiert.
Kopiert!
1/* Création d'une table SAS WORK locale */
2DATA work.produits;
3 INPUT ID $ NomProduit $ Prix;
4 DATALINES;
5 P001 Pomme 1.50
6 P002 Orange 2.00
7 P003 Banane 0.75
8 P004 Fraise 3.20
9 ;
10RUN;
11 
12/* Démarrage d'une session CAS et chargement de la table locale en mémoire CAS */
13PROC CAS; QUIT;
14CAS casauto;
15 
16PROC CAS;
17 SESSION casauto;
18 upload path="work.produits" casOut={name="produits_cas", replace=TRUE};
19RUN;
20 
21/* Copie de la table 'produits_cas' vers 'produits_copie_basique' */
22PROC CAS;
23 SESSION casauto;
24 TABLE.copyTable /
25 TABLE={name="produits_cas"},
26 casOut={name="produits_copie_basique", replace=TRUE};
27RUN;
28 
29/* Vérification de la nouvelle table */
30PROC CAS;
31 SESSION casauto;
32 TABLE.tableInfo /
33 caslib="CASUSER",
34 name="produits_copie_basique";
35RUN;
36QUIT;
2 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses Beispiel demonstriert das Kopieren einer Tabelle in eine andere Caslib und die Verwendung der Option 'promote'. Eine lokale Tabelle wird erstellt und in 'CASUSER' geladen. Anschließend wird eine neue Caslib namens 'reports' hinzugefügt. Die Tabelle 'ventes_cas' wird in diese neue Caslib unter dem Namen 'ventes_rapport' mit 'promote=TRUE' kopiert, wodurch sie für andere Benutzer oder CAS-Sitzungen zugänglich wird. Dies veranschaulicht eine fortgeschrittenere Verwaltung von Tabellen zwischen verschiedenen Caslibs.
Kopiert!
1/* Création d'une table SAS WORK locale */
2DATA work.ventes_region;
3 INPUT Region $ Produit $ Quantite;
4 DATALINES;
5 Nord A 100
6 Sud B 150
7 Est C 80
8 Ouest A 200
9 ;
10RUN;
11 
12/* Démarrage d'une session CAS (si non déjà active) */
13PROC CAS; QUIT;
14CAS casauto;
15 
16/* Création d'une nouvelle caslib pour la destination */
17PROC CAS;
18 SESSION casauto;
19 TABLE.addCaslib /
20 name="reports",
21 path="/tmp/cas_reports", /* Chemin physique sur le serveur CAS */
22 dataSource={srcType="path"},
23 subdirectories=TRUE,
24 replace=TRUE;
25RUN;
26 
27/* Chargement de la table locale en mémoire CAS dans CASUSER */
28PROC CAS;
29 SESSION casauto;
30 upload path="work.ventes_region" casOut={name="ventes_cas", replace=TRUE};
31RUN;
32 
33/* Copie de 'ventes_cas' vers la caslib 'reports' et promotion de la table */
34PROC CAS;
35 SESSION casauto;
36 TABLE.copyTable /
37 TABLE={name="ventes_cas", caslib="CASUSER"},
38 casOut={name="ventes_rapport", caslib="reports", promote=TRUE, replace=TRUE};
39RUN;
40 
41/* Vérification de la nouvelle table dans la caslib 'reports' */
42PROC CAS;
43 SESSION casauto;
44 TABLE.tableInfo /
45 caslib="reports",
46 name="ventes_rapport";
47RUN;
48 
49/* Nettoyage de la caslib temporaire */
50PROC CAS;
51 SESSION casauto;
52 TABLE.dropCaslib / caslib="reports", terminate=TRUE;
53RUN;
54QUIT;
3 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses Beispiel veranschaulicht eine erweiterte Kopie, bei der Spalten der Tabelle während des Kopiervorgangs umbenannt werden. Die neue Tabelle ('clients_processed') erhält außerdem eine beschreibende 'label'. Dies ist nützlich, um Spaltennamen an spezifische Konventionen anzupassen oder den Inhalt der Daten in der kopierten Tabelle zu verdeutlichen.
Kopiert!
1/* Création d'une table SAS WORK locale plus complexe */
2DATA work.clients_info;
3 LENGTH ClientID $8 NomClient $20 Age 8 Revenu 8;
4 INPUT ClientID NomClient $ Age Revenu;
5 FORMAT Revenu DOLLAR10.2;
6 DATALINES;
7 C001 Dupont 35 50000
8 C002 Martin 28 45000
9 C003 Dubois 42 60000
10 C004 Petit 55 75000
11 ;
12RUN;
13 
14/* Démarrage d'une session CAS (si non déjà active) */
15PROC CAS; QUIT;
16CAS casauto;
17 
18/* Chargement de la table locale en mémoire CAS */
19PROC CAS;
20 SESSION casauto;
21 upload path="work.clients_info" casOut={name="clients_original", replace=TRUE};
22RUN;
23 
24/* Copie de la table avec renommage de colonnes et ajout d'un label à la nouvelle table */
25PROC CAS;
26 SESSION casauto;
27 TABLE.copyTable /
28 TABLE={name="clients_original"},
29 casOut={name="clients_processed", replace=TRUE,
30 label="Clients avec Informations Détaillées"},
31 rename={{name="ClientID", newname="ID_Unique"},
32 {name="Revenu", newname="RevenuAnnuel"}};
33RUN;
34 
35/* Vérification de la nouvelle table et de ses colonnes */
36PROC CAS;
37 SESSION casauto;
38 TABLE.columnInfo /
39 caslib="CASUSER",
40 name="clients_processed";
41RUN;
42 
43PROC CAS;
44 SESSION casauto;
45 TABLE.fetch /
46 caslib="CASUSER",
47 TABLE={name="clients_processed"};
48RUN;
49QUIT;
4 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieses Beispiel verdeutlicht die Viya/CAS-Integration für die Verwaltung großer Tabellen und die Leistung. Es erstellt eine große lokale SAS-Tabelle und dann zwei separate Caslibs ('source_data' und 'destination_data'). Die Tabelle wird in die Quell-Caslib geladen und dann in die Ziel-Caslib kopiert. Die Verwendung der Option 'nthreads' in 'copyTable' ist ein Beispiel für die Leistungsoptimierung bei Operationen mit großen Datenmengen im verteilten CAS-Speicher. Eine Bereinigung der temporären Caslibs ist ebenfalls enthalten.
Kopiert!
1/* Création d'une table SAS WORK locale de grande taille */
2DATA work.donnees_simulees;
3 DO i = 1 TO 10000;
4 ID = i;
5 Valeur1 = RANUNI(0) * 100;
6 Valeur2 = RANNORM(0) * 10;
7 OUTPUT;
8 END;
9RUN;
10 
11/* Démarrage d'une session CAS (si non déjà active) */
12PROC CAS; QUIT;
13CAS casauto;
14 
15/* Création de deux caslibs pour la source et la destination */
16PROC CAS;
17 SESSION casauto;
18 TABLE.addCaslib /
19 name="source_data",
20 path="/tmp/cas_source", /* Chemin physique sur le serveur CAS */
21 dataSource={srcType="path"},
22 subdirectories=TRUE,
23 replace=TRUE;
24 TABLE.addCaslib /
25 name="destination_data",
26 path="/tmp/cas_destination", /* Chemin physique sur le serveur CAS */
27 dataSource={srcType="path"},
28 subdirectories=TRUE,
29 replace=TRUE;
30RUN;
31 
32/* Chargement de la table locale dans la caslib 'source_data' */
33PROC CAS;
34 SESSION casauto;
35 upload path="work.donnees_simulees" casOut={name="grande_table_source", caslib="source_data", replace=TRUE};
36RUN;
37 
38/* Copie de la table de 'source_data' vers 'destination_data' */
39/* L'option 'nthreads' peut être utilisée pour optimiser la performance sur de grandes tables */
40PROC CAS;
41 SESSION casauto;
42 TABLE.copyTable /
43 TABLE={name="grande_table_source", caslib="source_data"},
44 casOut={name="grande_table_dest", caslib="destination_data", replace=TRUE},
45 nthreads=8; /* Utilise 8 threads pour la copie (nombre à ajuster selon le système) */
46RUN;
47 
48/* Vérification de la table copiée dans la caslib de destination */
49PROC CAS;
50 SESSION casauto;
51 TABLE.tableInfo /
52 caslib="destination_data",
53 name="grande_table_dest";
54RUN;
55 
56/* Nettoyage des caslibs temporaires (optionnel) */
57PROC CAS;
58 SESSION casauto;
59 TABLE.dropCaslib /
60 caslib="source_data",
61 terminate=TRUE;
62 TABLE.dropCaslib /
63 caslib="destination_data",
64 terminate=TRUE;
65RUN;
66QUIT;
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.