Publicado el :
Gestión de datos CREATION_INTERNE

Indexar un archivo SASHDAT existente

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
1/* Assurez-vous qu'une session CAS est active */
2options cashost="localhost" casport=5570;
3cas casauto;
4 
5/* Crée une caslib temporaire si elle n'existe pas */
6PROC CAS;
7 caslib _all_ assign;
8 BUILTINS.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
9QUIT;
10 
11/* 1. Création d'un fichier SASHDAT simple sur disque */
12DATA casuser.monfichier_unindexed;
13 INPUT ID $ Nom $ Valeur;
14 DATALINES;
15 A Jean 100
16 B Marie 150
17 C Pierre 200
18 D Anne 120
19 ;
20RUN;
21 
22PROC CASUTIL;
23 save casuser.monfichier_unindexed / caslib='mycaslib' replace;
24QUIT;
25 
26/* 2. Indexation d'une seule colonne du fichier SASHDAT */
27PROC CAS;
28 TABLE.index /
29 TABLE={name='monfichier_unindexed.sashdat', caslib='mycaslib'},
30 casout={name='monfichier_indexed', replace=TRUE, indexVars={'ID'}};
31RUN;
32 
33/* 3. Sauvegarde de la table indexée, remplaçant l'originale pour persister l'index */
34 TABLE.save /
35 TABLE='monfichier_indexed',
36 name='monfichier_unindexed.sashdat',
37 caslib='mycaslib',
38 replace=TRUE;
39RUN;
40 
41/* 4. Vérification de l'indexation (optionnel) */
42 TABLE.tableDetails / TABLE={name='monfichier_indexed', caslib='mycaslib'};
43RUN;
44QUIT;
45 
2 Bloque de código
DATA STEP / table.index Data
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!
1/* Assurez-vous qu'une session CAS est active */
2options cashost="localhost" casport=5570;
3cas casauto;
4 
5/* Crée une caslib temporaire si elle n'existe pas */
6PROC CAS;
7 caslib _all_ assign;
8 BUILTINS.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
9QUIT;
10 
11/* 1. Création d'un autre fichier SASHDAT sur disque */
12DATA casuser.ventes_unindexed;
13 INPUT Produit $ Region $ Montant;
14 DATALINES;
15 A Est 1000
16 B Ouest 1500
17 A Nord 800
18 C Sud 2200
19 B Est 1100
20 ;
21RUN;
22 
23PROC CASUTIL;
24 save casuser.ventes_unindexed / caslib='mycaslib' replace;
25QUIT;
26 
27/* 2. Indexation de plusieurs colonnes */
28PROC CAS;
29 TABLE.index /
30 TABLE={name='ventes_unindexed.sashdat', caslib='mycaslib'},
31 casout={name='ventes_indexed', replace=TRUE, indexVars={'Produit', 'Region'}};
32RUN;
33 
34/* 3. Sauvegarde de la table indexée */
35 TABLE.save /
36 TABLE='ventes_indexed',
37 name='ventes_unindexed.sashdat',
38 caslib='mycaslib',
39 replace=TRUE;
40RUN;
41 
42/* 4. Affichage des détails de la table pour confirmer l'index */
43 TABLE.tableDetails / TABLE={name='ventes_indexed', caslib='mycaslib'};
44RUN;
45QUIT;
46 
3 Bloque de código
DATA STEP / table.index / table.loadTable Data
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!
1/* Assurez-vous qu'une session CAS est active */
2options cashost="localhost" casport=5570;
3cas casauto;
4 
5/* Crée une caslib temporaire si elle n'existe pas */
6PROC CAS;
7 caslib _all_ assign;
8 BUILTINS.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
9QUIT;
10 
11/* 1. Création d'un fichier SASHDAT de plus grande taille */
12DATA casuser.grandedonnees_unindexed;
13 DO i = 1 to 100000;
14 ID = i;
15 Groupe = ceil(i / 1000);
16 Valeur = ranuni(0) * 1000;
17 OUTPUT;
18 END;
19RUN;
20 
21PROC CASUTIL;
22 save casuser.grandedonnees_unindexed / caslib='mycaslib' replace;
23QUIT;
24 
25/* 2. Indexation de colonnes clés directement depuis le fichier SASHDAT sur disque */
26PROC CAS;
27 TABLE.index /
28 TABLE={name='grandedonnees_unindexed.sashdat', caslib='mycaslib'},
29 casout={name='grandedonnees_indexed', replace=TRUE, indexVars={'ID', 'Groupe'}};
30RUN;
31 
32/* 3. Sauvegarde de la table indexée, pour persister l'index sur disque */
33 TABLE.save /
34 TABLE='grandedonnees_indexed',
35 name='grandedonnees_unindexed.sashdat',
36 caslib='mycaslib',
37 replace=TRUE;
38RUN;
39 
40/* 4. Nettoyage de la table en mémoire pour simuler un rechargement */
41 TABLE.dropTable / name='grandedonnees_indexed';
42RUN;
43 
44/* 5. Chargement de la table SASHDAT qui inclut maintenant l'index */
45 TABLE.loadTable /
46 caslib='mycaslib',
47 path='grandedonnees_unindexed.sashdat',
48 casout={name='grandedonnees_reloaded', replace=TRUE};
49RUN;
50 
51/* 6. Vérification que la table rechargée possède bien l'index */
52 TABLE.tableDetails / TABLE={name='grandedonnees_reloaded', caslib='mycaslib'};
53RUN;
54QUIT;
55 
4 Bloque de código
DATA STEP / table.upload / table.index Data
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!
1/* Assurez-vous qu'une session CAS est active */
2options cashost="localhost" casport=5570;
3cas casauto;
4 
5/* Crée une caslib temporaire si elle n'existe pas */
6PROC CAS;
7 caslib _all_ assign;
8 BUILTINS.addCaslib / name='mycaslib', path='/tmp/mycaslib', subdirs=TRUE, dataSource={srcType='PATH'};
9QUIT;
10 
11/* 1. Création d'un fichier SASHDAT local */
12DATA _null_;
13 file '/tmp/mycaslib/data_locale_unindexed.sashdat';
14 DO i = 1 to 5000;
15 ID = i;
16 Categorie = ceil(i / 1000);
17 Value = rannor(0);
18 OUTPUT;
19 END;
20RUN;
21 
22/* 2. Chargement du fichier SASHDAT dans CAS en tant que table en mémoire */
23PROC CASUTIL;
24 load DATA='/tmp/mycaslib/data_locale_unindexed.sashdat' outcaslib='mycaslib' casout='data_locale_cas' replace;
25QUIT;
26 
27/* 3. Création d'une nouvelle table CAS indexée à partir de la table en mémoire */
28PROC CAS;
29 TABLE.index /
30 TABLE={name='data_locale_cas', caslib='mycaslib'},
31 casout={name='data_locale_cas_indexed', replace=TRUE, indexVars={'ID', 'Categorie'}};
32RUN;
33 
34/* 4. Vérification de l'indexation de la nouvelle table CAS */
35 TABLE.tableDetails / TABLE={name='data_locale_cas_indexed', caslib='mycaslib'};
36RUN;
37 
38/* 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;
44RUN;
45QUIT;
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.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved. Last updated: January 5, 2022