Los ejemplos requieren la creación previa de un archivo CSV, su compresión en GZ y su colocación en un directorio del sistema de archivos accesible por el servidor CAS.
1 Bloque de código
PROC CAS / table.loadTable
Explicación : Este ejemplo ilustra la carga básica de un archivo CSV comprimido en GZ. Configura una caslib temporal que apunta a una ruta local en el servidor CAS. Luego, utiliza `table.loadTable` con `fileType='csv'` y `archiveType='gz'` para descomprimir y cargar el archivo. `getNames=true` indica que la primera línea del CSV contiene los nombres de las columnas. Se realiza una verificación rápida con `table.fetch`, seguida de una limpieza de los recursos CAS.
¡Copiado!
/* 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 Bloque de código
PROC CAS / table.loadTable
Explicación : Este ejemplo demuestra cómo cargar un archivo CSV comprimido en GZ cuando el delimitador no es la coma estándar. La opción `delimiter=';'` se utiliza para especificar el punto y coma. También se especifica la codificación `UTF-8`, lo cual es una buena práctica para garantizar la compatibilidad de los caracteres. Se incluyen los pasos de verificación y limpieza.
¡Copiado!
/* 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 Bloque de código
PROC CAS / table.loadTable
Explicación : Este ejemplo utiliza opciones avanzadas para optimizar el proceso de carga y la detección del esquema de datos. `guessingRows=500` fuerza a CAS a analizar las primeras 500 líneas para determinar los tipos y longitudes de las columnas, útil para archivos voluminosos con datos heterogéneos. `nRows=100000` puede ayudar a estimar el tamaño. `blocksize='1M'` ajusta el tamaño de los bloques de lectura para un mejor rendimiento. Luego se utiliza `table.columnInfo` para inspeccionar el esquema detectado.
¡Copiado!
/* 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 Bloque de código
PROC CAS / table.loadTable
Explicación : Este ejemplo explora el manejo de errores y la verificación en un entorno CAS. Intenta cargar un archivo CSV comprimido en GZ que podría contener errores de formato. Se incluyen opciones como `maxRows` y `nthreads`. Después del intento de carga, se utiliza `table.tableInfo` para obtener metadatos sobre la tabla, incluidas las indicaciones de posibles problemas. `table.fetch` muestra los datos si la carga fue exitosa. El objetivo es mostrar cómo el servidor CAS reacciona a los datos mal formados y cómo se puede recuperar la información para la depuración. El usuario debe consultar el registro CAS para obtener mensajes de error detallados.
¡Copiado!
/* 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;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.