Los ejemplos utilizan datos generados (paso DATA con asignación directa) para crear tablas CAS temporales.
1 Bloque de código
DATA STEP / PROC CAS Data
Explicación : Este ejemplo muestra el uso más simple de `table.append`. Se crean dos tablas, `t1` (origen) y `t2` (destino), con estructuras idénticas. La acción `table.append` se llama para añadir todas las filas de `t1` al final de `t2`. Finalmente, `proc print` se utiliza para verificar el contenido de la tabla `t2` después de la operación de adición.
¡Copiado!
/* Préparation de l'environnement CAS */
options cashost="cloud.example.com" casport=5570;
cas casauto;
libname mycas cas caslib="CASUSER(your-username)";
/* Création de la table cible (t2) */
data mycas.t2;
length id 8 nom $10 ville $10;
id = 1;
nom = 'Alice';
ville = 'Paris';
output;
id = 2;
nom = 'Bob';
ville = 'Lyon';
output;
run;
/* Création de la table source (t1) */
data mycas.t1;
length id 8 nom $10 ville $10;
id = 3;
nom = 'Charlie';
ville = 'Marseille';
output;
run;
/* Ajout de la table t1 à la table t2 */
proc cas;
table.append /
source={caslib='CASUSER(your-username)',name='t1'}
target={caslib='CASUSER(your-username)',name='t2'};
run;
/* Affichage de la table t2 mise à jour */
proc print data=mycas.t2; run;
1
/* Préparation de l'environnement CAS */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
LIBNAME mycas cas caslib="CASUSER(your-username)";
Explicación : Este ejemplo utiliza la acción `table.append` con tablas de estructuras ligeramente diferentes. La tabla de origen `nouveaux_clients` contiene una columna `pays` que no existe en la tabla de destino `clients`. CAS gestionará esta incompatibilidad ignorando la columna `pays` durante la adición. La opción `promote=TRUE` en la tabla de destino asegura que la tabla actualizada sea visible para todos los usuarios que tengan los permisos apropiados en la sesión CAS. La opción `noAutoPromote=FALSE` se incluye para asegurar que si se usa 'promote', prevalece sobre la promoción automática, si está desactivada por defecto.
¡Copiado!
/* Préparation de l'environnement CAS */
options cashost="cloud.example.com" casport=5570;
cas casauto;
libname mycas cas caslib="CASUSER(your-username)";
/* Création de la table cible (clients) */
data mycas.clients;
length id 8 nom $10 age 8;
id = 1;
nom = 'Alice';
age = 30;
output;
run;
/* Création de la table source (nouveaux_clients) avec une colonne supplémentaire */
data mycas.nouveaux_clients;
length id 8 nom $10 age 8 pays $10;
id = 3;
nom = 'Charlie';
age = 25;
pays = 'France';
output;
run;
/* Ajout avec l'option 'casout' et 'promote' pour rendre la table visible et 'noAutoPromote=FALSE' */
proc cas;
table.append /
source={caslib='CASUSER(your-username)',name='nouveaux_clients'}
target={caslib='CASUSER(your-username)',name='clients', promote=TRUE, noAutoPromote=FALSE};
run;
/* Affichage de la table clients mise à jour */
proc print data=mycas.clients; run;
1
/* Préparation de l'environnement CAS */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
LIBNAME mycas cas caslib="CASUSER(your-username)";
5
6
/* Création de la table cible (clients) */
7
DATA mycas.clients;
8
LENGTH id 8 nom $10 age 8;
9
id = 1;
10
nom = 'Alice';
11
age = 30;
12
OUTPUT;
13
RUN;
14
15
/* Création de la table source (nouveaux_clients) avec une colonne supplémentaire */
16
DATA mycas.nouveaux_clients;
17
LENGTH id 8 nom $10 age 8 pays $10;
18
id = 3;
19
nom = 'Charlie';
20
age = 25;
21
pays = 'France';
22
OUTPUT;
23
RUN;
24
25
/* Ajout avec l'option 'casout' et 'promote' pour rendre la table visible et 'noAutoPromote=FALSE' */
Explicación : Este ejemplo avanzado demuestra cómo renombrar columnas de la tabla de origen sobre la marcha antes de la operación de adición. La tabla `commandes_recentes` tiene nombres de columnas diferentes a `commandes_historiques`. La opción `vars` en el parámetro `source` se utiliza para especificar el mapeo de las columnas (`rename='nouveau_nom'`). Esto garantiza que los datos de la fuente se alineen correctamente con la estructura del destino.
¡Copiado!
/* Préparation de l'environnement CAS */
options cashost="cloud.example.com" casport=5570;
cas casauto;
libname mycas cas caslib="CASUSER(your-username)";
/* Création de la table cible (commandes_historiques) */
data mycas.commandes_historiques;
length id_commande 8 article $15 quantite 8 date_achat $10;
id_commande = 101;
article = 'Livre A';
quantite = 2;
date_achat = '2023-01-15';
output;
run;
/* Création d'une table source (commandes_recentes) avec des colonnes à renommer/filtrer */
data mycas.commandes_recentes;
length order_id 8 product_name $15 qty 8 purchase_date $10;
order_id = 102;
product_name = 'Stylo B';
qty = 5;
purchase_date = '2023-02-20';
output;
order_id = 103;
product_name = 'Cahier C';
qty = 1;
purchase_date = '2023-03-01';
output;
run;
/* Ajout après renommage des colonnes dans la source pour correspondre à la cible */
proc cas;
table.append /
source={caslib='CASUSER(your-username)', name='commandes_recentes',
vars={{name='order_id', rename='id_commande'},
{name='product_name', rename='article'},
{name='qty', rename='quantite'},
{name='purchase_date', rename='date_achat'}}
}
target={caslib='CASUSER(your-username)', name='commandes_historiques'};
run;
/* Affichage de la table commandes_historiques mise à jour */
proc print data=mycas.commandes_historiques; run;
1
/* Préparation de l'environnement CAS */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
LIBNAME mycas cas caslib="CASUSER(your-username)";
5
6
/* Création de la table cible (commandes_historiques) */
/* Affichage de la table commandes_historiques mise à jour */
44
PROC PRINTDATA=mycas.commandes_historiques; RUN;
4 Bloque de código
DATA STEP / PROC CAS Data
Explicación : Este ejemplo explora la gestión de tipos de datos incompatibles durante la adición. Inicialmente, la tabla de origen `nouveaux_produits` tiene la columna `prix` como cadena de caracteres, mientras que la tabla de destino `produits` tiene `prix` como numérico. Un intento directo de adición con `addCols=TRUE` (que por defecto gestiona las columnas que faltan) podría fallar o resultar en una conversión implícita con pérdida de datos si los tipos son demasiado diferentes. La solución mostrada es crear un paso `DATA` intermedio (`nouveaux_produits_clean`) para convertir explícitamente la columna `prix` de la fuente a numérico antes de proceder con la adición. Esto garantiza la compatibilidad de los tipos y el éxito de la operación.
¡Copiado!
/* Préparation de l'environnement CAS */
options cashost="cloud.example.com" casport=5570;
cas casauto;
libname mycas cas caslib="CASUSER(your-username)";
/* Création de la table cible (produits) */
data mycas.produits;
length ref 8 nom_produit $15 prix 8;
ref = 1;
nom_produit = 'Pommes';
prix = 1.50;
output;
run;
/* Création d'une table source (nouveaux_produits) avec type de données incompatible pour 'prix' */
data mycas.nouveaux_produits;
length ref 8 nom_produit $15 prix $10;
ref = 2;
nom_produit = 'Poires';
prix = '2.25 EUR'; /* Prix comme chaîne de caractères */
output;
ref = 3;
nom_produit = 'Bananes';
prix = '1.80'; /* Prix comme chaîne de caractères */
output;
run;
/* Tentative d'ajout avec l'option 'addCols=FALSE' pour ignorer les colonnes incompatibles, ou 'addCols=TRUE' pour tenter d'ajouter les colonnes */
/* Dans cet exemple, nous allons d'abord illustrer un échec potentiel en omettant 'addCols' ou en l'utilisant avec 'promote=FALSE' sur source, puis une solution. */
/* Tentative échouée si les types sont trop différents et sans gestion spécifique */
proc cas;
table.append /
source={caslib='CASUSER(your-username)',name='nouveaux_produits'}
target={caslib='CASUSER(your-username)',name='produits'}
addCols=TRUE; /* Tente d'ajouter de nouvelles colonnes si elles n'existent pas */
/* Si les colonnes existent mais ont des types incompatibles, cela peut échouer ou entraîner une conversion de type */
run;
/* Pour gérer l'incompatibilité de type sur 'prix', on peut la renommer ou la supprimer/convertir dans la source */
/* Ici, nous allons convertir 'prix' en numérique avant l'ajout */
data nouveaux_produits_clean;
set mycas.nouveaux_produits;
prix_num = input(prix, BEST.); /* Convertit la chaîne en numérique */
drop prix;
rename prix_num=prix;
run;
/* Ajout avec la table source nettoyée */
proc cas;
table.append /
source={caslib='CASUSER(your-username)',name='nouveaux_produits_clean'}
target={caslib='CASUSER(your-username)',name='produits'};
run;
/* Affichage de la table produits mise à jour */
proc print data=mycas.produits; run;
1
/* Préparation de l'environnement CAS */
2
options cashost="cloud.example.com" casport=5570;
3
cas casauto;
4
LIBNAME mycas cas caslib="CASUSER(your-username)";
5
6
/* Création de la table cible (produits) */
7
DATA mycas.produits;
8
LENGTH ref 8 nom_produit $15 prix 8;
9
ref = 1;
10
nom_produit = 'Pommes';
11
prix = 1.50;
12
OUTPUT;
13
RUN;
14
15
/* Création d'une table source (nouveaux_produits) avec type de données incompatible pour 'prix' */
16
DATA mycas.nouveaux_produits;
17
LENGTH ref 8 nom_produit $15 prix $10;
18
ref = 2;
19
nom_produit = 'Poires';
20
prix = '2.25 EUR'; /* Prix comme chaîne de caractères */
21
OUTPUT;
22
ref = 3;
23
nom_produit = 'Bananes';
24
prix = '1.80'; /* Prix comme chaîne de caractères */
25
OUTPUT;
26
RUN;
27
28
/* Tentative d'ajout avec l'option 'addCols=FALSE' pour ignorer les colonnes incompatibles, ou 'addCols=TRUE' pour tenter d'ajouter les colonnes */
29
/* Dans cet exemple, nous allons d'abord illustrer un échec potentiel en omettant 'addCols' ou en l'utilisant avec 'promote=FALSE' sur source, puis une solution. */
30
/* Tentative échouée si les types sont trop différents et sans gestion spécifique */
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.