Les exemples nécessitent la création préalable d'un fichier CSV, sa compression en GZ, et son placement dans un répertoire du système de fichiers accessible par le serveur CAS.
1 Bloc de code
PROC CAS / table.loadTable
Explication : Cet exemple illustre le chargement de base d'un fichier CSV compressé en GZ. Il configure une caslib temporaire pointant vers un chemin local au serveur CAS. Ensuite, il utilise `table.loadTable` avec `fileType='csv'` et `archiveType='gz'` pour décompresser et charger le fichier. `getNames=true` indique que la première ligne du CSV contient les noms des colonnes. Une vérification rapide avec `table.fetch` est effectuée, suivie d'un nettoyage des ressources CAS.
Copié !
/* 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 Bloc de code
PROC CAS / table.loadTable
Explication : Cet exemple démontre comment charger un fichier CSV compressé en GZ lorsque le délimiteur n'est pas la virgule standard. L'option `delimiter=';'` est utilisée pour spécifier le point-virgule. L'encodage `UTF-8` est également précisé, ce qui est une bonne pratique pour garantir la compatibilité des caractères. Les étapes de vérification et de nettoyage sont incluses.
Copié !
/* 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 Bloc de code
PROC CAS / table.loadTable
Explication : Cet exemple utilise des options avancées pour optimiser le processus de chargement et la détection du schéma de données. `guessingRows=500` force CAS à analyser les 500 premières lignes pour déterminer les types et longueurs des colonnes, utile pour les fichiers volumineux avec des données hétérogènes. `nRows=100000` peut aider à l'estimation de la taille. `blocksize='1M'` ajuste la taille des blocs de lecture pour de meilleures performances. `table.columnInfo` est ensuite utilisé pour inspecter le schéma détecté.
Copié !
/* 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 Bloc de code
PROC CAS / table.loadTable
Explication : Cet exemple explore la gestion des erreurs et la vérification dans un environnement CAS. Il tente de charger un fichier CSV compressé en GZ qui pourrait contenir des erreurs de formatage. Des options comme `maxRows` et `nthreads` sont incluses. Après la tentative de chargement, `table.tableInfo` est utilisé pour obtenir des métadonnées sur la table, y compris des indications sur d'éventuels problèmes. `table.fetch` affiche les données si le chargement a réussi. L'objectif est de montrer comment le serveur CAS réagit aux données malformées et comment les informations peuvent être récupérées pour le débogage. L'utilisateur devrait consulter le journal CAS pour les messages d'erreur détaillés.
Copié !
/* 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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Dans un environnement de données massives, le chargement de fichiers bruts peut rapidement saturer la bande passante réseau. L'utilisation de l'option archiveType='gz' avec table.loadTable est une pratique d'excellence : elle permet au serveur CAS de lire des données compressées et de les décompresser 'au vol' en mémoire.
Cette approche réduit non seulement l'espace de stockage sur vos volumes de données (caslib), mais accélère également le transfert vers les nœuds de calcul. Pour les fichiers volumineux, n'hésitez pas à ajuster le paramètre guessingRows. En analysant un échantillon plus large dès le départ, vous garantissez un typage de colonnes précis et évitez les troncatures de données inattendues lors de l'importation »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.