Die Beispiele erfordern die vorherige Erstellung einer CSV-Datei, deren Komprimierung in GZ und deren Platzierung in einem Dateisystemverzeichnis, das über den CAS-Server zugänglich ist.
1 Codeblock
PROC CAS / table.loadTable
Erklärung : Dieses Beispiel veranschaulicht das grundlegende Laden einer in GZ komprimierten CSV-Datei. Es konfiguriert eine temporäre Caslib, die auf einen lokalen Pfad zum CAS-Server verweist. Anschließend wird `table.loadTable` mit `fileType='csv'` und `archiveType='gz'` verwendet, um die Datei zu dekomprimieren und zu laden. `getNames=true` gibt an, dass die erste Zeile der CSV-Datei die Spaltennamen enthält. Eine schnelle Überprüfung mit `table.fetch` wird durchgeführt, gefolgt von einer Bereinigung der CAS-Ressourcen.
Kopiert!
/* Préparation requise par l'utilisateur: */
/* Créez un fichier 'sample_data.csv' avec le contenu suivant: */
/* id,name,value */
/* 1,Alice,100 */
/* 2,Bob,150 */
/* 3,Charlie,200 */
/* Compressez-le: `gzip sample_data.csv` pour obtenir 'sample_data.csv.gz'. */
/* Placez 'sample_data.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
proc cas;
/* Ajout d'une caslib temporaire pour l'exemple */
/* Remplacez '/tmp/cas_data_gz' par un chemin accessible et inscriptible par le serveur CAS */
table.addCaslib /
name="mycaslib"
dataSource={srcType="path"},
path="/tmp/cas_data_gz";
/* Chargement du fichier GZ contenant un CSV */
table.loadTable /
caslib="mycaslib",
path="sample_data.csv.gz",
importOptions={
fileType="csv",
archiveType="gz",
getNames=true
},
casout={
name="mydata_basic",
replace=true
};
/* Vérification du chargement (affiche les 5 premières lignes) */
table.fetch /
table={name="mydata_basic"},
maxRows=5;
/* Nettoyage: Suppression de la table chargée */
table.dropTable /
caslib="mycaslib",
name="mydata_basic";
/* Nettoyage: Suppression de la caslib temporaire */
table.dropCaslib /
caslib="mycaslib";
run;
1
/* Préparation requise par l'utilisateur: */
2
/* Créez un fichier 'sample_data.csv' avec le contenu suivant: */
3
/* id,name,value */
4
/* 1,Alice,100 */
5
/* 2,Bob,150 */
6
/* 3,Charlie,200 */
7
/* Compressez-le: `gzip sample_data.csv` pour obtenir 'sample_data.csv.gz'. */
8
/* Placez 'sample_data.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
9
10
PROC CAS;
11
/* Ajout d'une caslib temporaire pour l'exemple */
12
/* Remplacez '/tmp/cas_data_gz' par un chemin accessible et inscriptible par le serveur CAS */
13
TABLE.addCaslib /
14
name="mycaslib"
15
dataSource={srcType="path"},
16
path="/tmp/cas_data_gz";
17
18
/* Chargement du fichier GZ contenant un CSV */
19
TABLE.loadTable /
20
caslib="mycaslib",
21
path="sample_data.csv.gz",
22
importOptions={
23
fileType="csv",
24
archiveType="gz",
25
getNames=true
26
},
27
casout={
28
name="mydata_basic",
29
replace=true
30
};
31
32
/* Vérification du chargement (affiche les 5 premières lignes) */
33
TABLE.fetch /
34
TABLE={name="mydata_basic"},
35
maxRows=5;
36
37
/* Nettoyage: Suppression de la table chargée */
38
TABLE.dropTable /
39
caslib="mycaslib",
40
name="mydata_basic";
41
42
/* Nettoyage: Suppression de la caslib temporaire */
43
TABLE.dropCaslib /
44
caslib="mycaslib";
45
RUN;
2 Codeblock
PROC CAS / table.loadTable
Erklärung : Dieses Beispiel zeigt, wie eine in GZ komprimierte CSV-Datei geladen wird, wenn das Trennzeichen nicht das Standardkomma ist. Die Option `delimiter=';'` wird verwendet, um das Semikolon anzugeben. Die Kodierung `UTF-8` wird ebenfalls angegeben, was eine gute Praxis ist, um die Zeichenkompatibilität zu gewährleisten. Überprüfungs- und Bereinigungsschritte sind enthalten.
Kopiert!
/* Préparation requise par l'utilisateur: */
/* Créez un fichier 'sample_data_semicolon.csv' avec le contenu suivant: */
/* id;name;value */
/* 1;Alice;100 */
/* 2;Bob,150 */
/* 3;Charlie,200 */
/* Compressez-le: `gzip sample_data_semicolon.csv` pour obtenir 'sample_data_semicolon.csv.gz'. */
/* Placez 'sample_data_semicolon.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
proc cas;
/* Ajout d'une caslib temporaire pour l'exemple */
table.addCaslib /
name="mycaslib"
dataSource={srcType="path"},
path="/tmp/cas_data_gz";
/* Chargement du fichier GZ contenant un CSV avec délimiteur personnalisé */
table.loadTable /
caslib="mycaslib",
path="sample_data_semicolon.csv.gz",
importOptions={
fileType="csv",
archiveType="gz",
getNames=true,
delimiter=";", /* Spécifie le point-virgule comme délimiteur */
encoding="UTF-8" /* Spécifie l'encodage du fichier */
},
casout={
name="mydata_custom_delimiter",
replace=true
};
/* Vérification du chargement (affiche les 5 premières lignes) */
table.fetch /
table={name="mydata_custom_delimiter"},
maxRows=5;
/* Nettoyage: Suppression de la table chargée */
table.dropTable /
caslib="mycaslib",
name="mydata_custom_delimiter";
/* Nettoyage: Suppression de la caslib temporaire */
table.dropCaslib /
caslib="mycaslib";
run;
1
/* Préparation requise par l'utilisateur: */
2
/* Créez un fichier 'sample_data_semicolon.csv' avec le contenu suivant: */
3
/* id;name;value */
4
/* 1;Alice;100 */
5
/* 2;Bob,150 */
6
/* 3;Charlie,200 */
7
/* Compressez-le: `gzip sample_data_semicolon.csv` pour obtenir 'sample_data_semicolon.csv.gz'. */
8
/* Placez 'sample_data_semicolon.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
9
10
PROC CAS;
11
/* Ajout d'une caslib temporaire pour l'exemple */
12
TABLE.addCaslib /
13
name="mycaslib"
14
dataSource={srcType="path"},
15
path="/tmp/cas_data_gz";
16
17
/* Chargement du fichier GZ contenant un CSV avec délimiteur personnalisé */
18
TABLE.loadTable /
19
caslib="mycaslib",
20
path="sample_data_semicolon.csv.gz",
21
importOptions={
22
fileType="csv",
23
archiveType="gz",
24
getNames=true,
25
delimiter=";", /* Spécifie le point-virgule comme délimiteur */
26
encoding="UTF-8"/* Spécifie l'encodage du fichier */
27
},
28
casout={
29
name="mydata_custom_delimiter",
30
replace=true
31
};
32
33
/* Vérification du chargement (affiche les 5 premières lignes) */
34
TABLE.fetch /
35
TABLE={name="mydata_custom_delimiter"},
36
maxRows=5;
37
38
/* Nettoyage: Suppression de la table chargée */
39
TABLE.dropTable /
40
caslib="mycaslib",
41
name="mydata_custom_delimiter";
42
43
/* Nettoyage: Suppression de la caslib temporaire */
44
TABLE.dropCaslib /
45
caslib="mycaslib";
46
RUN;
3 Codeblock
PROC CAS / table.loadTable
Erklärung : Dieses Beispiel verwendet erweiterte Optionen, um den Ladevorgang und die Schemaerkennung zu optimieren. `guessingRows=500` zwingt CAS, die ersten 500 Zeilen zu analysieren, um Spaltentypen und -längen zu bestimmen, was bei großen Dateien mit heterogenen Daten nützlich ist. `nRows=100000` kann bei der Größenschätzung helfen. `blocksize='1M'` passt die Blockgröße für bessere Leistung an. Anschließend wird `table.columnInfo` verwendet, um das erkannte Schema zu überprüfen.
Kopiert!
/* Préparation requise par l'utilisateur: */
/* Créez un fichier 'sample_data_large.csv' avec le même contenu que 'sample_data.csv' ou plus de lignes. */
/* Compressez-le: `gzip sample_data_large.csv` pour obtenir 'sample_data_large.csv.gz'. */
/* Placez 'sample_data_large.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
proc cas;
/* Ajout d'une caslib temporaire pour l'exemple */
table.addCaslib /
name="mycaslib"
dataSource={srcType="path"},
path="/tmp/cas_data_gz";
/* Chargement avec des options avancées de détection de schéma et de performance */
table.loadTable /
caslib="mycaslib",
path="sample_data_large.csv.gz",
importOptions={
fileType="csv",
archiveType="gz",
getNames=true,
guessingRows=500, /* Augmente le nombre de lignes pour une meilleure détection du type de colonnes */
nRows=100000, /* Indique le nombre de lignes à lire si le fichier est très grand (pour l'estimation) */
blocksize="1M" /* Spécifie la taille des blocs de lecture pour optimiser les performances */
},
casout={
name="mydata_perf_options",
replace=true
};
/* Vérification des informations des colonnes de la table chargée */
table.columnInfo /
table={name="mydata_perf_options"};
/* Nettoyage: Suppression de la table chargée */
table.dropTable /
caslib="mycaslib",
name="mydata_perf_options";
/* Nettoyage: Suppression de la caslib temporaire */
table.dropCaslib /
caslib="mycaslib";
run;
1
/* Préparation requise par l'utilisateur: */
2
/* Créez un fichier 'sample_data_large.csv' avec le même contenu que 'sample_data.csv' ou plus de lignes. */
3
/* Compressez-le: `gzip sample_data_large.csv` pour obtenir 'sample_data_large.csv.gz'. */
4
/* Placez 'sample_data_large.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
5
6
PROC CAS;
7
/* Ajout d'une caslib temporaire pour l'exemple */
8
TABLE.addCaslib /
9
name="mycaslib"
10
dataSource={srcType="path"},
11
path="/tmp/cas_data_gz";
12
13
/* Chargement avec des options avancées de détection de schéma et de performance */
14
TABLE.loadTable /
15
caslib="mycaslib",
16
path="sample_data_large.csv.gz",
17
importOptions={
18
fileType="csv",
19
archiveType="gz",
20
getNames=true,
21
guessingRows=500, /* Augmente le nombre de lignes pour une meilleure détection du type de colonnes */
22
nRows=100000, /* Indique le nombre de lignes à lire si le fichier est très grand (pour l'estimation) */
23
blocksize="1M"/* Spécifie la taille des blocs de lecture pour optimiser les performances */
24
},
25
casout={
26
name="mydata_perf_options",
27
replace=true
28
};
29
30
/* Vérification des informations des colonnes de la table chargée */
31
TABLE.columnInfo /
32
TABLE={name="mydata_perf_options"};
33
34
/* Nettoyage: Suppression de la table chargée */
35
TABLE.dropTable /
36
caslib="mycaslib",
37
name="mydata_perf_options";
38
39
/* Nettoyage: Suppression de la caslib temporaire */
40
TABLE.dropCaslib /
41
caslib="mycaslib";
42
RUN;
4 Codeblock
PROC CAS / table.loadTable
Erklärung : Dieses Beispiel befasst sich mit Fehlerbehandlung und Überprüfung in einer CAS-Umgebung. Es wird versucht, eine in GZ komprimierte CSV-Datei zu laden, die Formatierungsfehler enthalten könnte. Optionen wie `maxRows` und `nthreads` sind enthalten. Nach dem Ladeversuch wird `table.tableInfo` verwendet, um Metadaten zur Tabelle zu erhalten, einschließlich Hinweisen auf mögliche Probleme. `table.fetch` zeigt die Daten an, wenn das Laden erfolgreich war. Ziel ist es zu zeigen, wie der CAS-Server auf fehlerhafte Daten reagiert und wie Informationen zur Fehlerbehebung abgerufen werden können. Der Benutzer sollte das CAS-Protokoll für detaillierte Fehlermeldungen konsultieren.
Kopiert!
/* Préparation requise par l'utilisateur: */
/* Créez un fichier 'sample_data_error.csv' avec un format intentionnellement incorrect (ex: ligne manquante ou colonne supplémentaire) */
/* id,name,value */
/* 1,Alice,100 */
/* 2,Bob,150,extra */
/* 3,Charlie */
/* Compressez-le: `gzip sample_data_error.csv` pour obtenir 'sample_data_error.csv.gz'. */
/* Placez 'sample_data_error.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
proc cas;
/* Ajout d'une caslib temporaire pour l'exemple */
table.addCaslib /
name="mycaslib"
dataSource={srcType="path"},
path="/tmp/cas_data_gz";
/* Tentative de chargement d'un fichier avec des erreurs potentielles */
/* Des options comme `addrowid=true` ou `maxerrs` peuvent être utiles pour le débogage */
table.loadTable /
caslib="mycaslib",
path="sample_data_error.csv.gz",
importOptions={
fileType="csv",
archiveType="gz",
getNames=true,
maxRows=100, /* Limite les lignes lues pour éviter de surcharger en cas de problème */
nthreads=4 /* Utilise plusieurs threads pour le chargement */
},
casout={
name="mydata_error_check",
replace=true
};
/* Vérification de l'état de la table et des messages d'erreur si le chargement a échoué */
table.tableInfo /
caslib="mycaslib",
name="mydata_error_check";
/* Si le chargement est réussi, afficher les données, sinon, inspecter le log CAS */
table.fetch /
table={name="mydata_error_check"}
;
/* Nettoyage: Suppression de la table chargée */
table.dropTable /
caslib="mycaslib",
name="mydata_error_check";
/* Nettoyage: Suppression de la caslib temporaire */
table.dropCaslib /
caslib="mycaslib";
run;
1
/* Préparation requise par l'utilisateur: */
2
/* Créez un fichier 'sample_data_error.csv' avec un format intentionnellement incorrect (ex: ligne manquante ou colonne supplémentaire) */
3
/* id,name,value */
4
/* 1,Alice,100 */
5
/* 2,Bob,150,extra */
6
/* 3,Charlie */
7
/* Compressez-le: `gzip sample_data_error.csv` pour obtenir 'sample_data_error.csv.gz'. */
8
/* Placez 'sample_data_error.csv.gz' dans le répertoire '/tmp/cas_data_gz/' accessible par le serveur CAS. */
9
10
PROC CAS;
11
/* Ajout d'une caslib temporaire pour l'exemple */
12
TABLE.addCaslib /
13
name="mycaslib"
14
dataSource={srcType="path"},
15
path="/tmp/cas_data_gz";
16
17
/* Tentative de chargement d'un fichier avec des erreurs potentielles */
18
/* Des options comme `addrowid=true` ou `maxerrs` peuvent être utiles pour le débogage */
19
TABLE.loadTable /
20
caslib="mycaslib",
21
path="sample_data_error.csv.gz",
22
importOptions={
23
fileType="csv",
24
archiveType="gz",
25
getNames=true,
26
maxRows=100, /* Limite les lignes lues pour éviter de surcharger en cas de problème */
27
nthreads=4/* Utilise plusieurs threads pour le chargement */
28
},
29
casout={
30
name="mydata_error_check",
31
replace=true
32
};
33
34
/* Vérification de l'état de la table et des messages d'erreur si le chargement a échoué */
35
TABLE.tableInfo /
36
caslib="mycaslib",
37
name="mydata_error_check";
38
39
/* Si le chargement est réussi, afficher les données, sinon, inspecter le log CAS */
40
TABLE.fetch /
41
TABLE={name="mydata_error_check"}
42
;
43
44
/* Nettoyage: Suppression de la table chargée */
45
TABLE.dropTable /
46
caslib="mycaslib",
47
name="mydata_error_check";
48
49
/* Nettoyage: Suppression de la caslib temporaire */
50
TABLE.dropCaslib /
51
caslib="mycaslib";
52
RUN;
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.