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.
| Paramètre | Description |
|---|---|
| casout | Spécifie les paramètres de la table de sortie où les données seront copiées. |
| casout.caslib | Spécifie le nom de la caslib pour la table de sortie. |
| casout.compress | Lorsqu'il est défini sur True, applique la compression des données à la table de sortie. |
| casout.indexVars | Spécifie une liste de variables sur lesquelles créer des index dans la table de sortie pour accélérer les requêtes. |
| casout.label | Spécifie une étiquette descriptive à associer à la table de sortie. |
| casout.lifetime | Spé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.maxMemSize | Spé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.memoryFormat | Spécifie le format de mémoire pour la table de sortie (STANDARD, DVR, INHERIT). |
| casout.name | Spécifie le nom de la table de sortie. |
| casout.promote | Lorsqu'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.replace | Lorsqu'il est défini sur True, écrase une table de sortie existante portant le même nom. |
| casout.replication | Spécifie le nombre de copies de la table à créer pour la tolérance aux pannes sur un serveur distribué. |
| casout.tableRedistUpPolicy | Spé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.threadBlockSize | Spé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.timeStamp | Spécifie d'ajouter une colonne d'horodatage à la table de sortie. |
| distributeRows | Lorsqu'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. |
| table | Spécifie la table d'entrée à copier. |
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.
| 1 | DATA 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; |
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'.
| 1 | PROC CAS; |
| 2 | TABLE.copyTable / |
| 3 | TABLE={caslib="casuser", name="my_table"}, |
| 4 | casout={caslib="casuser", name="my_table_copy"}; |
| 5 | RUN; |
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à.
| 1 | PROC 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; |
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.
| 1 | PROC CAS; |
| 2 | TABLE.copyTable / |
| 3 | TABLE={caslib="casuser", name="my_table"}, |
| 4 | casout={caslib="casuser", name="global_table", promote=true, replace=true}; |
| 5 | RUN; |
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.
| 1 | PROC 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; |
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....
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...
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é,...