table

copyTable

Description

Copie les données d'une table en mémoire vers une autre table en mémoire. Cette action est très efficace pour dupliquer des tables, créer des sauvegardes ou préparer des données pour des analyses ultérieures sans modifier la table d'origine.

table.copyTable / casout={...} distributeRows=TRUE | FALSE, table={...};
Paramètres
ParamètreDescription
casoutSpécifie les paramètres de la table de sortie où les données seront copiées.
casout.caslibSpécifie le nom de la caslib pour la table de sortie.
casout.compressLorsqu'il est défini sur True, applique la compression des données à la table de sortie.
casout.indexVarsSpécifie une liste de variables sur lesquelles créer des index dans la table de sortie pour accélérer les requêtes.
casout.labelSpécifie une étiquette descriptive à associer à la table de sortie.
casout.lifetimeSpécifie le nombre de secondes pendant lesquelles conserver la table en mémoire après son dernier accès. La table est supprimée si elle n'est pas accédée pendant le nombre de secondes spécifié.
casout.maxMemSizeSpécifie la quantité maximale de mémoire, en octets, que chaque thread doit allouer pour les blocs en mémoire avant de passer à un fichier mappé en mémoire.
casout.memoryFormatSpécifie le format de mémoire pour la table de sortie (STANDARD, DVR, INHERIT).
casout.nameSpécifie le nom de la table de sortie.
casout.promoteLorsqu'il est défini sur True, rend la table de sortie accessible globalement à toutes les sessions CAS, sous réserve des contrôles d'accès.
casout.replaceLorsqu'il est défini sur True, écrase une table de sortie existante portant le même nom.
casout.replicationSpécifie le nombre de copies de la table à créer pour la tolérance aux pannes sur un serveur distribué.
casout.tableRedistUpPolicySpécifie la politique de redistribution de la table lorsque le nombre de workers augmente sur un serveur CAS en cours d'exécution (DEFER, NOREDIST, REBALANCE).
casout.threadBlockSizeSpécifie la taille en octets des blocs de données lus par les threads, utile pour l'optimisation des performances sur de très grandes tables.
casout.timeStampSpécifie d'ajouter une colonne d'horodatage à la table de sortie.
distributeRowsLorsqu'il est défini sur True, les lignes de la table d'origine sont redistribuées entre les workers dans la copie. Par défaut, les lignes restent sur leur worker d'origine.
tableSpécifie la table d'entrée à copier.
Préparation des Données Voir la fiche de ce code dataprep
Création de la table source

Ce bloc de code SAS crée une table nommée 'my_table' dans la caslib 'casuser'. Cette table contient des informations sur des produits et servira de base pour les exemples de copie.

Copié !
1DATA casuser.my_table;
2 LENGTH product_name $ 20;
3 INFILE DATALINES delimiter=',';
4 INPUT product_id product_name $ price update_date:date9.;
5 FORMAT update_date date9.;
6 DATALINES;
7 1,Laptop,1200,01JAN2023
8 2,Mouse,25,15JAN2023
9 3,Keyboard,75,20FEB2023
10 4,Monitor,300,05MAR2023
11 ;
12 RUN;

Exemples

Cet exemple montre comment effectuer une copie simple de la table 'my_table' vers une nouvelle table nommée 'my_table_copy' dans la même caslib 'casuser'.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 TABLE.copyTable /
3 TABLE={caslib="casuser", name="my_table"},
4 casout={caslib="casuser", name="my_table_copy"};
5 RUN;
Résultat :
Une nouvelle table nommée 'my_table_copy' est créée dans la caslib 'casuser'. Elle est une copie exacte de la table 'my_table'.

Cet exemple copie la table 'my_table' vers 'my_table_new_col' et y ajoute une nouvelle colonne 'price_with_tax'. Cette nouvelle colonne est calculée en appliquant une taxe de 20% au prix original. L'option 'replace=true' est utilisée pour écraser la table de destination si elle existe déjà.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 TABLE.copyTable /
3 TABLE={caslib="casuser", name="my_table",
4 computedVars={"price_with_tax"},
5 computedVarsProgram="price_with_tax = price * 1.20;"},
6 casout={caslib="casuser", name="my_table_new_col", replace=true};
7 RUN;
Résultat :
La table 'my_table_new_col' est créée (ou écrasée). Elle contient toutes les colonnes de la table d'origine plus une colonne supplémentaire 'price_with_tax' calculée à partir de la colonne 'price'.

Cet exemple copie la table 'my_table' vers une nouvelle table nommée 'global_table' et utilise l'option 'promote=true'. Cela rend la table 'global_table' accessible à toutes les autres sessions CAS, pas seulement à la session actuelle.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 TABLE.copyTable /
3 TABLE={caslib="casuser", name="my_table"},
4 casout={caslib="casuser", name="global_table", promote=true, replace=true};
5 RUN;
Résultat :
La table 'global_table' est créée dans la caslib 'casuser' et est promue avec une portée globale, la rendant visible et utilisable par d'autres sessions.

Cet exemple copie la table 'my_table' vers 'my_table_indexed' et ajoute un index sur la colonne 'product_id'. L'indexation peut considérablement améliorer les performances des requêtes qui filtrent sur la colonne indexée.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 TABLE.copyTable /
3 TABLE={caslib="casuser", name="my_table"},
4 casout={caslib="casuser", name="my_table_indexed", indexVars={"product_id"}, replace=true};
5 RUN;
Résultat :
Une nouvelle table 'my_table_indexed' est créée avec un index sur la colonne 'product_id', ce qui peut accélérer les opérations de filtrage et de jointure basées sur cet identifiant.

FAQ

Quel est l'objectif de l'action `copyTable` dans SAS Viya ?
Quels sont les deux paramètres obligatoires pour utiliser l'action `copyTable` ?
Comment puis-je écraser une table de destination existante avec `copyTable` ?
Est-il possible de copier une table et de la rendre accessible à toutes les autres sessions CAS ?
Puis-je copier une table vers une autre caslib ?
À quoi sert le paramètre `distributeRows` ?

Scénarios associés

Cas d'usage
Duplication pour Simulation Marketing (Bac à Sable)

L'équipe Marketing souhaite effectuer des simulations de scoring sur la base client actuelle sans altérer la table de production utilisée par les tableaux de bord en temps réel....

Cas d'usage
Préparation Haute Disponibilité pour Détection de Fraude

Pour l'entraînement d'un modèle de détection de fraude en temps réel, la banque a besoin de redistribuer un grand volume de logs de transactions sur tous les nœuds de calcul (wo...

Cas d'usage
Sauvegarde Temporaire Données Sensibles (Droit à l'oubli)

Le service RH doit effectuer une mise à jour critique sur la table des salaires. Une sauvegarde est requise avant l'opération, mais pour des raisons de conformité RGPD/Sécurité,...