Veröffentlicht am :
Datenverwaltung CREATION_INTERNE

Einer vorhandenen SASHDAT-Datei einen Index hinzufügen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die Aktion `table.index` wird verwendet, um einen Index für angegebene Spalten einer SASHDAT-Datei zu erstellen. Im Gegensatz zur Indexierung nach dem Laden in den Speicher ermöglicht diese Methode, die SASHDAT-Datei über den Parameter `table` direkt als Eingabe für die Aktion `index` zu verwenden. Dies optimiert die Ressourcennutzung, da die Aktion die Datei direkt von der Festplatte liest, anstatt das vollständige Laden der ursprünglichen Tabelle in den Speicher zu erfordern. Das Ergebnis des Vorgangs ist eine neue CAS-Tabelle im Speicher mit den indizierten Spalten. Diese neue Tabelle kann dann auf der Festplatte gespeichert werden, wodurch die ursprüngliche SASHDAT-Datei möglicherweise ersetzt oder eine neue Datei erstellt wird, um die Indexierung beizubehalten. Die Aktion `table.tableDetails` wird anschließend verwendet, um das Vorhandensein und die Größe des Index in der resultierenden Tabelle zu überprüfen.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden über SAS DATA Steps und CAS-Prozeduren generierte Daten, um temporäre SASHDAT-Dateien zu Demonstrationszwecken zu erstellen und so die Autonomie jedes Codeblocks zu gewährleisten.

1 Codeblock
DATA STEP / table.index Data
Erklärung :
Dieses Beispiel erstellt eine einfache SASHDAT-Datei `monfichier_unindexed.sashdat` in einer temporären Caslib. Anschließend wird die Aktion `table.index` verwendet, um einen Index für die Spalte 'ID' zu erstellen, indem die SASHDAT-Datei direkt angegeben wird. Die indizierte Tabelle `monfichier_indexed` wird dann gespeichert, um die Indexierung in der ursprünglichen SASHDAT-Datei beizubehalten. Die Aktion `table.tableDetails` wird verwendet, um zu bestätigen, dass der Index erstellt wurde.
Kopiert!
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 Codeblock
DATA STEP / table.index Data
Erklärung :
Dieses Beispiel veranschaulicht die Indexierung mehrerer Spalten ('Produit', 'Region') einer SASHDAT-Datei. Nach dem Erstellen und Speichern der Datei `ventes_unindexed.sashdat` erstellt die Aktion `table.index` einen zusammengesetzten Index. `table.tableDetails` wird dann verwendet, um detaillierte Informationen der In-Memory-Tabelle `ventes_indexed` anzuzeigen und das Vorhandensein und die Konfiguration des neuen Index, einschließlich seiner Größe, zu bestätigen.
Kopiert!
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 Codeblock
DATA STEP / table.index / table.loadTable Data
Erklärung :
Dieses erweiterte Beispiel zeigt, wie ein Index für eine große SASHDAT-Datei erstellt und diese mit intaktem Index in den Speicher neu geladen wird. Nach dem Erstellen eines großen Datensatzes `grandedonnees_unindexed.sashdat` und seiner Indexierung nach 'ID' und 'Groupe' wird die indizierte Tabelle gespeichert. Die In-Memory-Tabelle wird dann gelöscht, um einen Neustart zu simulieren. Schließlich wird die Tabelle über `table.loadTable` in den Speicher neu geladen, und `table.tableDetails` bestätigt, dass die Indexierung während der Persistenz und des Neuladens erhalten geblieben ist, was die Effizienz dieses Ansatzes für große Datenmengen demonstriert.
Kopiert!
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 Codeblock
DATA STEP / table.upload / table.index Data
Erklärung :
Dieses Beispiel zeigt, wie SASHDAT-Dateien vom Dateisystem zu CAS verarbeitet werden. Zuerst wird eine SASHDAT-Datei lokal erstellt und dann als In-Memory-Tabelle in CAS geladen. Anschließend wird die Aktion `table.index` auf diese In-Memory-CAS-Tabelle angewendet, um eine neue CAS-Tabelle mit den gewünschten Indizes zu erstellen. Schließlich wird diese indizierte CAS-Tabelle in eine neue SASHDAT-Datei auf der Festplatte gespeichert, die die Indexierung enthält. `table.tableDetails` wird verwendet, um den Index in der In-Memory-CAS-Tabelle zu bestätigen.
Kopiert!
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 
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved. Last updated: January 5, 2022