Maîtrisez l'option INDEX= : Guide complet pour l'indexation de vos tables SAS

Ce code est également disponible en : Deutsch English Español

Niveau de difficulté
Débutant
Publié le :
Stéphanie

Le Conseil de l'Expert

Stéphanie
Spécialiste Machine Learning et IA.

Ne multipliez pas les index inutilement. Un index composite bien pensé sur vos clés de recherche fréquentes vaut mieux que dix index simples qui ralentiront vos écritures disque.

performance
L'option INDEX= permet de définir un index pour un nouvel ensemble de données SAS© en sortie. Une spécification d'index nomme et décrit un index simple ou composite à construire, suivant le format : `index= (variable(s) </UNIQUE> </NOMISS> )`. `index` est le nom d'une variable qui forme l'index, ou le nom que vous choisissez pour un index composite. `variable(s)` est une liste de variables à utiliser pour construire un index composite. L'option `UNIQUE` spécifie que les valeurs des variables clés doivent être uniques. Si cette option est spécifiée pour un nouvel ensemble de données et que plusieurs observations ont les mêmes valeurs pour les variables d'index, l'index n'est pas construit. Un slash (/) doit précéder l'option UNIQUE. L'option `NOMISS` exclut toutes les observations avec des valeurs manquantes de l'index. Les observations avec des valeurs manquantes sont toujours lues à partir de l'ensemble de données, mais pas via l'index. Un slash (/) doit précéder l'option NOMISS.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP.

1 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée un ensemble de données `mydata` puis définit un index simple sur la variable SSN pour le nouvel ensemble de données `new`.
Copié !
1DATA mydata;
2 INPUT ssn $ city $ state $;
3 DATALINES;
4123-45-6789 Raleigh NC
5987-65-4321 Cary NC
6111-22-3333 Apex NC
7444-55-6666 Durham NC
8123-45-6789 Raleigh NC
9. missing_city missing_state
10;
11RUN;
12 
13DATA new(index=(ssn));
14 SET mydata;
15RUN;
Result
2 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée un ensemble de données `mydata` puis définit un index composite nommé CITYST, en utilisant les variables CITY et STATE pour le nouvel ensemble de données `new`.
Copié !
1DATA mydata;
2 INPUT ssn $ city $ state $;
3 DATALINES;
4123-45-6789 Raleigh NC
5987-65-4321 Cary NC
6111-22-3333 Apex NC
7444-55-6666 Durham NC
8123-45-6789 Raleigh NC
9. missing_city missing_state
10;
11RUN;
12 
13DATA new(index=(cityst=(city state)));
14 SET mydata;
15RUN;
Result
3 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée un ensemble de données `mydata` puis définit un index simple sur SSN et un index composite sur CITY et STATE pour le nouvel ensemble de données `new`.
Copié !
1DATA mydata;
2 INPUT ssn $ city $ state $;
3 DATALINES;
4123-45-6789 Raleigh NC
5987-65-4321 Cary NC
6111-22-3333 Apex NC
7444-55-6666 Durham NC
8123-45-6789 Raleigh NC
9. missing_city missing_state
10;
11RUN;
12 
13DATA new(index=(ssn cityst=(city state)));
14 SET mydata;
15RUN;
Result
4 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée un ensemble de données `mydata` avec des SSN uniques puis tente de définir un index simple unique pour la variable SSN. Notez que si des doublons sont présents dans `ssn`, l'index ne sera pas construit.
Copié !
1DATA mydata;
2 INPUT ssn $ city $ state $;
3 DATALINES;
4123-45-6789 Raleigh NC
5987-65-4321 Cary NC
6111-22-3333 Apex NC
7444-55-6666 Durham NC
8;
9RUN;
10 
11/* This will fail if there are duplicates in ssn (like '123-45-6789') */
12DATA new(index=(ssn /unique));
13 SET mydata;
14RUN;
Result
5 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée un ensemble de données `mydata` puis définit un index simple pour la variable SSN, excluant toutes les observations avec des valeurs manquantes de l'index.
Copié !
1DATA mydata;
2 INPUT ssn $ city $ state $;
3 DATALINES;
4123-45-6789 Raleigh NC
5987-65-4321 Cary NC
6. missing_city missing_state
7111-22-3333 Apex NC
8;
9RUN;
10 
11DATA new(index=(ssn /nomiss));
12 SET mydata;
13RUN;
Result
6 Bloc de code
DATA STEP Data
Explication :
Cet exemple crée un ensemble de données `mydata` puis définit un index simple unique et sans valeurs manquantes pour la variable SSN, et un index composite unique et sans valeurs manquantes nommé CITYST pour les variables CITY et STATE. Les options UNIQUE et NOMISS s'appliquent à chaque spécification d'index.
Copié !
1DATA mydata;
2 INPUT ssn $ city $ state $;
3 DATALINES;
4123-45-6789 Raleigh NC
5987-65-4321 Cary NC
6111-22-3333 Apex NC
7. missing_city missing_state
8;
9RUN;
10 
11DATA new(index=(ssn /unique/nomiss cityst=(city state) /unique/nomiss));
12 SET mydata;
13RUN;
Result
L'Astuce Pro
L'astuce technique essentielle pour l'option INDEX= est de placer l'option /UNIQUE ou /NOMISS immédiatement après chaque définition d'index spécifique à l'intérieur de la parenthèse globale, car SAS traite ces options de manière indépendante pour chaque index simple ou composite : si vous spécifiez /UNIQUE sur un index composite comme cityst=(city state), SAS n'interdira pas les doublons dans les colonnes individuelles city ou state, mais empêchera uniquement la création de deux observations possédant exactement la même combinaison de ville et d'état, garantissant ainsi l'intégrité de vos clés de jointure sans restreindre inutilement vos données.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.

Documentation liée

Aucune documentation spécifique pour cette catégorie.