?> alterTable - WeAreCAS
table

alterTable

Description

L'action `alterTable` dans SAS Viya est un outil puissant pour la gestion des tables en mémoire. Elle permet de modifier les métadonnées d'une table CAS sans avoir à la recréer. Vous pouvez l'utiliser pour renommer la table elle-même, ajouter ou modifier son libellé, réorganiser, renommer, formater ou supprimer des colonnes, et même changer le type de certaines colonnes. C'est une action essentielle pour nettoyer et préparer les données directement sur le serveur CAS, optimisant ainsi les performances en évitant des transferts de données inutiles.

proc cas; table.alterTable / caslib="caslib-name" name="table-name" <rename="new-table-name"> <label="table-label"> <columns={ {name="col1", rename="new_col1", label="nouveau libellé", format="nouveau_format"}, {name="col2", drop=true} }> <drop={"col3", "col4"}> <keep={"col5", "col6"}> <columnOrder={"new_col1", "col5", "col6"}>; run;
Paramètres
ParamètreDescription
caslibSpécifie la caslib où se trouve la table à modifier. Si omis, la caslib active de la session est utilisée.
nameNom de la table en mémoire que vous souhaitez modifier.
renameSpécifie le nouveau nom pour la table.
labelAssigne ou modifie le libellé de la table.
columnsListe d'objets, chacun spécifiant les modifications à apporter à une colonne (renommer, changer de libellé, de format, de type ou supprimer).
dropListe de noms de colonnes à supprimer de la table.
keepListe de noms de colonnes à conserver, toutes les autres étant supprimées.
columnOrderSpécifie le nouvel ordre des colonnes dans la table.
lifetimeDéfinit une durée de vie (en secondes) pour la table. La table sera supprimée de la mémoire si elle n'est pas accédée pendant cette durée.
tableRedistUpPolicyDéfinit la politique de redistribution des données de la table si le nombre de nœuds de travail du serveur CAS augmente.
Préparation des Données
Création de la table de démonstration 'CARS'

Ce bloc de code SAS crée une table nommée 'CARS' dans la caslib de l'utilisateur (CASUSER). Cette table contient des informations sur différents modèles de voitures, incluant la marque, le modèle, le type, l'année et le prix. Elle servira de base pour les exemples suivants qui illustrent comment modifier ses propriétés avec l'action `alterTable`.

1DATA casuser.cars;
2 LENGTH Make $ 12 Model $ 20 Type $ 8;
3 INFILE DATALINES delimiter=',';
4 INPUT Make Model Type Year MSRP;
5 DATALINES;
6Toyota,Camry,Sedan,2023,26000
7Ford,F-150,Truck,2024,45000
8Honda,Civic,Sedan,2023,24000
9Chevrolet,Tahoe,SUV,2024,60000
10Nissan,Leaf,Electric,2023,35000
11;
12RUN;

Exemples

Cet exemple montre comment utiliser `alterTable` pour simplement changer le nom d'une table en mémoire de 'CARS' à 'AUTOMOBILES'.

Code SAS® / CAS
Copié !
1PROC CAS;
2 TABLE.alterTable /
3 caslib="casuser",
4 name="CARS",
5 rename="AUTOMOBILES";
6RUN;
7QUIT;
Résultat :
L'action s'exécute avec succès. La table 'CARS' n'existe plus dans la caslib 'CASUSER' et a été remplacée par la table 'AUTOMOBILES' avec le même contenu. Le journal SAS affichera une note confirmant le succès de l'opération.

Cet exemple illustre comment supprimer la colonne 'Type' de la table 'CARS'.

Code SAS® / CAS
Copié !
1PROC CAS;
2 TABLE.alterTable /
3 caslib="casuser",
4 name="CARS",
5 drop={"Type"};
6RUN;
7QUIT;
Résultat :
La colonne 'Type' est retirée de la table 'CARS'. Une vérification de la structure de la table (par exemple avec `table.columnInfo`) montrerait que cette colonne n'est plus présente.

Cet exemple détaillé montre comment enchaîner plusieurs modifications en un seul appel à `alterTable`. On renomme la table, on lui ajoute un libellé, on renomme la colonne 'MSRP' en 'Price' tout en lui appliquant un format monétaire et un nouveau libellé, et on supprime la colonne 'Year'.

Code SAS® / CAS
Copié !
1PROC CAS;
2 TABLE.alterTable /
3 caslib="casuser",
4 name="CARS",
5 rename="VEHICLE_SALES",
6 label="Données de vente de véhicules 2023-2024",
7 drop={"Year"},
8 columns={{
9 name="MSRP",
10 rename="Price",
11 label="Prix de Vente au Détail Suggéré",
12 FORMAT="DOLLAR12.2"
13 }};
14RUN;
15QUIT;
Résultat :
La table 'CARS' est transformée en 'VEHICLE_SALES' avec un nouveau libellé. La colonne 'Year' est supprimée. La colonne 'MSRP' est maintenant nommée 'Price', avec un libellé descriptif et un format d'affichage en dollars. Le journal SAS indiquera le succès de l'opération et les métadonnées de la table refléteront toutes ces modifications.

Cet exemple se concentre sur la modification des colonnes. Il change le libellé de 'Make', applique un format à 'Year', et surtout, définit un nouvel ordre pour les colonnes de la table 'CARS'.

Code SAS® / CAS
Copié !
1PROC CAS;
2 TABLE.alterTable /
3 caslib="casuser",
4 name="CARS",
5 columns={{
6 name="Make",
7 label="Constructeur Automobile"
8 },
9 {
10 name="Year",
11 FORMAT="4."
12 }},
13 columnOrder={"Model", "Make", "Year", "Type", "MSRP"};
14RUN;
15QUIT;
Résultat :
Les colonnes de la table 'CARS' sont maintenant dans l'ordre : Model, Make, Year, Type, MSRP. La colonne 'Make' a un nouveau libellé et la colonne 'Year' s'affichera sans séparateur de milliers. Le succès de l'opération est confirmé dans le journal SAS.

FAQ

Quel est l'objectif de l'action `alterTable` ?
Comment puis-je modifier les propriétés d'une ou plusieurs colonnes spécifiques ?
Est-il possible de renommer une table entière ?
Comment puis-je supprimer des colonnes d'une table ?
Puis-je changer le libellé d'une table ?
Comment spécifier la table à modifier si elle n'est pas dans la caslib active ?
Quelle est l'utilité du paramètre `lifetime` ?
Comment réorganiser l'ordre des colonnes dans les métadonnées de la table ?
Que fait le paramètre `tableRedistUpPolicy` ?