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!
/* 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 */
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!
/* 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 */
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!
/* 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 */
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!
/* 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
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.