table

index

##set_table ##data_management

Description

L'action `table.indexStructure de données accélérant la lecture des lignes d'une table en ciblant directement les valeurs des colonnes indexées, réduisant ainsi les entrées/sorties disque et le temps de traitement.` permet de créer des indexStructure de données accélérant la lecture des lignes d'une table en ciblant directement les valeurs des colonnes indexées, réduisant ainsi les entrées/sorties disque et le temps de traitement. sur une ou plusieurs colonnes (variables) d'une table en mémoire. Un indexStructure de données accélérant la lecture des lignes d'une table en ciblant directement les valeurs des colonnes indexées, réduisant ainsi les entrées/sorties disque et le temps de traitement. agit exactement comme l'indexStructure de données accélérant la lecture des lignes d'une table en ciblant directement les valeurs des colonnes indexées, réduisant ainsi les entrées/sorties disque et le temps de traitement. à la fin d'un livre : il évite au moteur CAS de lire toutes les lignes de la table pour trouver une information précise ! Cela accélère drastiquement les requêtes, filtres (WHERE) et jointures, en contrepartie d'une légère utilisation supplémentaire de la mémoire.

Syntaxe Officielle
proc cas;
table.index /
table={name="nom_table", caslib="nom_caslib"}
casout={name="nom_table_indexee", caslib="nom_caslib", indexVars={"colonne1", "colonne2"}, replace=True};
run;
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table source en entrée pour laquelle construire les index.
casout Détermine les paramètres de la table de sortie qui contiendra les données indexées.
casout.indexVars La fameuse liste des variables (colonnes) sur lesquelles créer un index .
casout.compress Active la compression de la table en mémoire (par défaut à FALSE). Très utile si votre table indexée devient gourmande !
casout.promote Si défini sur True, promeut la table de sortie avec une portée globale , la rendant accessible à d'autres sessions.

Préparation des données

Création d'une table d'exemple

Nous allons charger la table classique SASHELP.CARS dans notre session CAS (casuser) afin de pouvoir l'indexer dans nos exemples.

1PROC CASUTIL;
2 load DATA=sashelp.cars casout="cars" outcaslib="casuser" replace;
3QUIT;

Exemples d'utilisation

Indexation simple d'une colonne

Création d'une nouvelle table en mémoire avec un index basique sur la colonne `Make` (la marque du véhicule).

1PROC CAS;
2 TABLE.index /
3 TABLE={name="cars", caslib="casuser"}
4 casout={name="cars_idx", caslib="casuser", indexVars={"Make"}, replace=True};
5RUN;
6QUIT;
Résultat Attendu :
Une nouvelle table nommée `cars_idx` est générée en mémoire CAS. Elle possède désormais un index sur la colonne `Make`, ce qui garantit des filtres ultra-rapides sur les requêtes filtrant par marque.
Indexation multiple avec compression et promotion

Dans un contexte de production, on indexe souvent plusieurs colonnes clés. Ici, nous indexons `Make`, `Model` et `Origin`, tout en compressant la table résultante et en la promouvant (pour la rendre globale et persistante entre les sessions).

1PROC CAS;
2 TABLE.index /
3 TABLE={name="cars", caslib="casuser"}
4 casout={name="cars_advanced_idx", caslib="casuser", indexVars={"Make", "Model", "Origin"}, compress=True, promote=True, replace=True};
5RUN;
6QUIT;
Résultat Attendu :
La table `cars_advanced_idx` est créée, compressée pour économiser de la RAM, indexée sur trois colonnes distinctes, et promue pour que tous les autres utilisateurs ou tâches puissent l'exploiter à la vitesse de l'éclair.