La acción `table.index` se utiliza para crear un índice en columnas específicas de un archivo SASHDAT. A diferencia de la indexación después de la carga en memoria, este método permite designar el archivo SASHDAT como entrada de la acción `index` a través del parámetro `table`. Esto optimiza el uso de recursos, ya que la acción lee el archivo directamente desde el disco en lugar de requerir la carga completa de la tabla original en memoria. El resultado de la operación es una nueva tabla CAS en memoria con las columnas indexadas. Esta nueva tabla puede guardarse posteriormente en el disco, reemplazando potencialmente el archivo SASHDAT original o creando un nuevo archivo, para persistir la indexación. La acción `table.tableDetails` se utiliza luego para verificar la presencia y el tamaño del índice en la tabla resultante.
Análisis de datos
Type : CREATION_INTERNE
Los ejemplos utilizan datos generados a través de pasos DATA de SAS y procedimientos CAS para crear archivos SASHDAT temporales con fines de demostración, garantizando así la autonomía de cada bloque de código.
1 Bloque de código
DATA STEP / table.index Data
Explicación : Este ejemplo crea un archivo SASHDAT simple `monfichier_unindexed.sashdat` en una caslib temporal. Luego utiliza la acción `table.index` para crear un índice en la columna 'ID' especificando directamente el archivo SASHDAT. La tabla indexada `monfichier_indexed` se guarda posteriormente para persistir la indexación en el archivo SASHDAT original. La acción `table.tableDetails` se utiliza para confirmar que se ha creado el índice.
¡Copiado!
/* Assurez-vous qu'une session CAS est active */
options cashost="localhost" casport=5570;
cas casauto;
/* Crée une caslib temporaire si elle n'existe pas */
proc cas;
caslib _all_ assign;
builtins.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
quit;
/* 1. Création d'un fichier SASHDAT simple sur disque */
data casuser.monfichier_unindexed;
input ID $ Nom $ Valeur;
datalines;
A Jean 100
B Marie 150
C Pierre 200
D Anne 120
;
run;
proc casutil;
save casuser.monfichier_unindexed / caslib='mycaslib' replace;
quit;
/* 2. Indexation d'une seule colonne du fichier SASHDAT */
proc cas;
table.index /
table={name='monfichier_unindexed.sashdat', caslib='mycaslib'},
casout={name='monfichier_indexed', replace=TRUE, indexVars={'ID'}};
run;
/* 3. Sauvegarde de la table indexée, remplaçant l'originale pour persister l'index */
table.save /
table='monfichier_indexed',
name='monfichier_unindexed.sashdat',
caslib='mycaslib',
replace=TRUE;
run;
/* 4. Vérification de l'indexation (optionnel) */
table.tableDetails / table={name='monfichier_indexed', caslib='mycaslib'};
run;
quit;
1
/* Assurez-vous qu'une session CAS est active */
2
options cashost="localhost" casport=5570;
3
cas casauto;
4
5
/* Crée une caslib temporaire si elle n'existe pas */
Explicación : Este ejemplo ilustra la indexación de múltiples columnas ('Produit', 'Region') de un archivo SASHDAT. Después de la creación y guardado del archivo `ventes_unindexed.sashdat`, la acción `table.index` crea un índice compuesto. `table.tableDetails` se utiliza luego para mostrar la información detallada de la tabla en memoria `ventes_indexed`, confirmando la presencia y configuración del nuevo índice, incluyendo su tamaño.
¡Copiado!
/* Assurez-vous qu'une session CAS est active */
options cashost="localhost" casport=5570;
cas casauto;
/* Crée une caslib temporaire si elle n'existe pas */
proc cas;
caslib _all_ assign;
builtins.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
quit;
/* 1. Création d'un autre fichier SASHDAT sur disque */
data casuser.ventes_unindexed;
input Produit $ Region $ Montant;
datalines;
A Est 1000
B Ouest 1500
A Nord 800
C Sud 2200
B Est 1100
;
run;
proc casutil;
save casuser.ventes_unindexed / caslib='mycaslib' replace;
quit;
/* 2. Indexation de plusieurs colonnes */
proc cas;
table.index /
table={name='ventes_unindexed.sashdat', caslib='mycaslib'},
casout={name='ventes_indexed', replace=TRUE, indexVars={'Produit', 'Region'}};
run;
/* 3. Sauvegarde de la table indexée */
table.save /
table='ventes_indexed',
name='ventes_unindexed.sashdat',
caslib='mycaslib',
replace=TRUE;
run;
/* 4. Affichage des détails de la table pour confirmer l'index */
table.tableDetails / table={name='ventes_indexed', caslib='mycaslib'};
run;
quit;
1
/* Assurez-vous qu'une session CAS est active */
2
options cashost="localhost" casport=5570;
3
cas casauto;
4
5
/* Crée une caslib temporaire si elle n'existe pas */
Explicación : Este ejemplo avanzado muestra cómo crear un índice en un archivo SASHDAT de gran tamaño y recargarlo en memoria con el índice intacto. Después de la creación de un gran conjunto de datos `grandedonnees_unindexed.sashdat` y su indexación en 'ID' y 'Groupe', la tabla indexada se guarda. La tabla en memoria se elimina luego para simular un nuevo comienzo. Finalmente, la tabla se recarga en memoria a través de `table.loadTable`, y `table.tableDetails` confirma que la indexación se ha conservado correctamente durante la persistencia y la recarga, demostrando la eficacia de este enfoque para grandes volúmenes.
¡Copiado!
/* Assurez-vous qu'une session CAS est active */
options cashost="localhost" casport=5570;
cas casauto;
/* Crée une caslib temporaire si elle n'existe pas */
proc cas;
caslib _all_ assign;
builtins.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
quit;
/* 1. Création d'un fichier SASHDAT de plus grande taille */
data casuser.grandedonnees_unindexed;
do i = 1 to 100000;
ID = i;
Groupe = ceil(i / 1000);
Valeur = ranuni(0) * 1000;
output;
end;
run;
proc casutil;
save casuser.grandedonnees_unindexed / caslib='mycaslib' replace;
quit;
/* 2. Indexation de colonnes clés directement depuis le fichier SASHDAT sur disque */
proc cas;
table.index /
table={name='grandedonnees_unindexed.sashdat', caslib='mycaslib'},
casout={name='grandedonnees_indexed', replace=TRUE, indexVars={'ID', 'Groupe'}};
run;
/* 3. Sauvegarde de la table indexée, pour persister l'index sur disque */
table.save /
table='grandedonnees_indexed',
name='grandedonnees_unindexed.sashdat',
caslib='mycaslib',
replace=TRUE;
run;
/* 4. Nettoyage de la table en mémoire pour simuler un rechargement */
table.dropTable / name='grandedonnees_indexed';
run;
/* 5. Chargement de la table SASHDAT qui inclut maintenant l'index */
table.loadTable /
caslib='mycaslib',
path='grandedonnees_unindexed.sashdat',
casout={name='grandedonnees_reloaded', replace=TRUE};
run;
/* 6. Vérification que la table rechargée possède bien l'index */
table.tableDetails / table={name='grandedonnees_reloaded', caslib='mycaslib'};
run;
quit;
1
/* Assurez-vous qu'une session CAS est active */
2
options cashost="localhost" casport=5570;
3
cas casauto;
4
5
/* Crée une caslib temporaire si elle n'existe pas */
Explicación : Este ejemplo demuestra cómo trabajar con archivos SASHDAT desde el sistema de archivos hacia CAS. Primero se crea un archivo SASHDAT localmente, luego se carga en una tabla CAS en memoria. La acción `table.index` se aplica luego a esta tabla CAS en memoria para crear una nueva tabla CAS con los índices deseados. Finalmente, esta tabla CAS indexada se guarda en un nuevo archivo SASHDAT en disco, integrando la indexación. `table.tableDetails` se utiliza para confirmar el índice en la tabla CAS en memoria.
¡Copiado!
/* Assurez-vous qu'une session CAS est active */
options cashost="localhost" casport=5570;
cas casauto;
/* Crée une caslib temporaire si elle n'existe pas */
proc cas;
caslib _all_ assign;
builtins.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
quit;
/* 1. Création d'un fichier SASHDAT local */
data _null_;
file '/tmp/mycaslib/data_locale_unindexed.sashdat';
do i = 1 to 5000;
ID = i;
Categorie = ceil(i / 1000);
Value = rannor(0);
output;
end;
run;
/* 2. Chargement du fichier SASHDAT dans CAS en tant que table en mémoire */
proc casutil;
load data='/tmp/mycaslib/data_locale_unindexed.sashdat' outcaslib='mycaslib' casout='data_locale_cas' replace;
quit;
/* 3. Création d'une nouvelle table CAS indexée à partir de la table en mémoire */
proc cas;
table.index /
table={name='data_locale_cas', caslib='mycaslib'},
casout={name='data_locale_cas_indexed', replace=TRUE, indexVars={'ID', 'Categorie'}};
run;
/* 4. Vérification de l'indexation de la nouvelle table CAS */
table.tableDetails / table={name='data_locale_cas_indexed', caslib='mycaslib'};
run;
/* 5. Sauvegarde de la table CAS indexée vers un fichier SASHDAT */
table.save /
table='data_locale_cas_indexed',
name='data_locale_indexed.sashdat',
caslib='mycaslib',
replace=TRUE;
run;
quit;
1
/* Assurez-vous qu'une session CAS est active */
2
options cashost="localhost" casport=5570;
3
cas casauto;
4
5
/* Crée une caslib temporaire si elle n'existe pas */
/* 5. Sauvegarde de la table CAS indexée vers un fichier SASHDAT */
39
TABLE.save /
40
TABLE='data_locale_cas_indexed',
41
name='data_locale_indexed.sashdat',
42
caslib='mycaslib',
43
replace=TRUE;
44
RUN;
45
QUIT;
46
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.