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!
/* Création d'une table SAS WORK locale */
DATA work.produits;
INPUT ID $ NomProduit $ Prix;
DATALINES;
P001 Pomme 1.50
P002 Orange 2.00
P003 Banane 0.75
P004 Fraise 3.20
;
RUN;
/* Démarrage d'une session CAS et chargement de la table locale en mémoire CAS */
PROC CAS; quit;
CAS casauto;
PROC CAS;
session casauto;
upload path="work.produits" casOut={name="produits_cas", replace=TRUE};
RUN;
/* Copie de la table 'produits_cas' vers 'produits_copie_basique' */
PROC CAS;
session casauto;
table.copyTable /
table={name="produits_cas"},
casOut={name="produits_copie_basique", replace=TRUE};
RUN;
/* Vérification de la nouvelle table */
PROC CAS;
session casauto;
table.tableInfo /
caslib="CASUSER",
name="produits_copie_basique";
RUN;
QUIT;
1
/* Création d'une table SAS WORK locale */
2
DATA 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
;
10
RUN;
11
12
/* Démarrage d'une session CAS et chargement de la table locale en mémoire CAS */
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!
/* Création d'une table SAS WORK locale */
DATA work.ventes_region;
INPUT Region $ Produit $ Quantite;
DATALINES;
Nord A 100
Sud B 150
Est C 80
Ouest A 200
;
RUN;
/* Démarrage d'une session CAS (si non déjà active) */
PROC CAS; quit;
CAS casauto;
/* Création d'une nouvelle caslib pour la destination */
PROC CAS;
session casauto;
table.addCaslib /
name="reports",
path="/tmp/cas_reports", /* Chemin physique sur le serveur CAS */
dataSource={srcType="path"},
subdirectories=TRUE,
replace=TRUE;
RUN;
/* Chargement de la table locale en mémoire CAS dans CASUSER */
PROC CAS;
session casauto;
upload path="work.ventes_region" casOut={name="ventes_cas", replace=TRUE};
RUN;
/* Copie de 'ventes_cas' vers la caslib 'reports' et promotion de la table */
PROC CAS;
session casauto;
table.copyTable /
table={name="ventes_cas", caslib="CASUSER"},
casOut={name="ventes_rapport", caslib="reports", promote=TRUE, replace=TRUE};
RUN;
/* Vérification de la nouvelle table dans la caslib 'reports' */
PROC CAS;
session casauto;
table.tableInfo /
caslib="reports",
name="ventes_rapport";
RUN;
/* Nettoyage de la caslib temporaire */
PROC CAS;
session casauto;
table.dropCaslib / caslib="reports", terminate=TRUE;
RUN;
QUIT;
1
/* Création d'une table SAS WORK locale */
2
DATA 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
;
10
RUN;
11
12
/* Démarrage d'une session CAS (si non déjà active) */
13
PROC CAS; QUIT;
14
CAS casauto;
15
16
/* Création d'une nouvelle caslib pour la destination */
17
PROC 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;
25
RUN;
26
27
/* Chargement de la table locale en mémoire CAS dans CASUSER */
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!
/* Création d'une table SAS WORK locale plus complexe */
DATA work.clients_info;
LENGTH ClientID $8 NomClient $20 Age 8 Revenu 8;
INPUT ClientID NomClient $ Age Revenu;
FORMAT Revenu DOLLAR10.2;
DATALINES;
C001 Dupont 35 50000
C002 Martin 28 45000
C003 Dubois 42 60000
C004 Petit 55 75000
;
RUN;
/* Démarrage d'une session CAS (si non déjà active) */
PROC CAS; quit;
CAS casauto;
/* Chargement de la table locale en mémoire CAS */
PROC CAS;
session casauto;
upload path="work.clients_info" casOut={name="clients_original", replace=TRUE};
RUN;
/* Copie de la table avec renommage de colonnes et ajout d'un label à la nouvelle table */
PROC CAS;
session casauto;
table.copyTable /
table={name="clients_original"},
casOut={name="clients_processed", replace=TRUE,
label="Clients avec Informations Détaillées"},
rename={{name="ClientID", newname="ID_Unique"},
{name="Revenu", newname="RevenuAnnuel"}};
RUN;
/* Vérification de la nouvelle table et de ses colonnes */
PROC CAS;
session casauto;
table.columnInfo /
caslib="CASUSER",
name="clients_processed";
RUN;
PROC CAS;
session casauto;
table.fetch /
caslib="CASUSER",
table={name="clients_processed"};
RUN;
QUIT;
1
/* Création d'une table SAS WORK locale plus complexe */
2
DATA 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 3550000
8
C002 Martin 2845000
9
C003 Dubois 4260000
10
C004 Petit 5575000
11
;
12
RUN;
13
14
/* Démarrage d'une session CAS (si non déjà active) */
15
PROC CAS; QUIT;
16
CAS casauto;
17
18
/* Chargement de la table locale en mémoire CAS */
/* Copie de la table avec renommage de colonnes et ajout d'un label à la nouvelle table */
25
PROC 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"}};
33
RUN;
34
35
/* Vérification de la nouvelle table et de ses colonnes */
36
PROC CAS;
37
SESSION casauto;
38
TABLE.columnInfo /
39
caslib="CASUSER",
40
name="clients_processed";
41
RUN;
42
43
PROC CAS;
44
SESSION casauto;
45
TABLE.fetch /
46
caslib="CASUSER",
47
TABLE={name="clients_processed"};
48
RUN;
49
QUIT;
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!
/* Création d'une table SAS WORK locale de grande taille */
DATA work.donnees_simulees;
DO i = 1 TO 10000;
ID = i;
Valeur1 = RANUNI(0) * 100;
Valeur2 = RANNORM(0) * 10;
OUTPUT;
END;
RUN;
/* Démarrage d'une session CAS (si non déjà active) */
PROC CAS; quit;
CAS casauto;
/* Création de deux caslibs pour la source et la destination */
PROC CAS;
session casauto;
table.addCaslib /
name="source_data",
path="/tmp/cas_source", /* Chemin physique sur le serveur CAS */
dataSource={srcType="path"},
subdirectories=TRUE,
replace=TRUE;
table.addCaslib /
name="destination_data",
path="/tmp/cas_destination", /* Chemin physique sur le serveur CAS */
dataSource={srcType="path"},
subdirectories=TRUE,
replace=TRUE;
RUN;
/* Chargement de la table locale dans la caslib 'source_data' */
PROC CAS;
session casauto;
upload path="work.donnees_simulees" casOut={name="grande_table_source", caslib="source_data", replace=TRUE};
RUN;
/* Copie de la table de 'source_data' vers 'destination_data' */
/* L'option 'nthreads' peut être utilisée pour optimiser la performance sur de grandes tables */
PROC CAS;
session casauto;
table.copyTable /
table={name="grande_table_source", caslib="source_data"},
casOut={name="grande_table_dest", caslib="destination_data", replace=TRUE},
nthreads=8; /* Utilise 8 threads pour la copie (nombre à ajuster selon le système) */
RUN;
/* Vérification de la table copiée dans la caslib de destination */
PROC CAS;
session casauto;
table.tableInfo /
caslib="destination_data",
name="grande_table_dest";
RUN;
/* Nettoyage des caslibs temporaires (optionnel) */
PROC CAS;
session casauto;
table.dropCaslib /
caslib="source_data",
terminate=TRUE;
table.dropCaslib /
caslib="destination_data",
terminate=TRUE;
RUN;
QUIT;
1
/* Création d'une table SAS WORK locale de grande taille */
2
DATA 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;
9
RUN;
10
11
/* Démarrage d'une session CAS (si non déjà active) */
12
PROC CAS; QUIT;
13
CAS casauto;
14
15
/* Création de deux caslibs pour la source et la destination */
16
PROC 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;
30
RUN;
31
32
/* Chargement de la table locale dans la caslib 'source_data' */
nthreads=8; /* Utilise 8 threads pour la copie (nombre à ajuster selon le système) */
46
RUN;
47
48
/* Vérification de la table copiée dans la caslib de destination */
49
PROC CAS;
50
SESSION casauto;
51
TABLE.tableInfo /
52
caslib="destination_data",
53
name="grande_table_dest";
54
RUN;
55
56
/* Nettoyage des caslibs temporaires (optionnel) */
57
PROC CAS;
58
SESSION casauto;
59
TABLE.dropCaslib /
60
caslib="source_data",
61
terminate=TRUE;
62
TABLE.dropCaslib /
63
caslib="destination_data",
64
terminate=TRUE;
65
RUN;
66
QUIT;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.