Publicado el :
Manipulación de datos CREATION_INTERNE

Tipos de datos SAS en CAS

Este código también está disponible en: Deutsch English Français
En espera de validación
Los tipos de datos en SAS© Cloud Analytic Services definen la naturaleza de la información almacenada en cada columna de una tabla, influyendo directamente en la cantidad de memoria asignada y la forma en que se procesan los valores.
  • CHAR(n): Para cadenas de caracteres de longitud fija, donde `n` es el número máximo de caracteres. Los valores más cortos se rellenan con espacios. Este tipo no admite valores NULL ANSI SQL.
  • VARCHAR(n): Para cadenas de caracteres de longitud variable. Los valores no se rellenan con espacios. Ideal para datos cuya longitud varía. Se puede usar `VARCHAR(*)` cuando no se conoce la longitud máxima, pero esto puede resultar en una conversión a `CHAR(32767)` al copiar a bibliotecas que no admiten `VARCHAR`.
  • DOUBLE: Representa un número de coma flotante de doble precisión (64 bits) que permite una gran magnitud y alta precisión, y admite valores faltantes.
Los siguientes ejemplos ilustran el uso de estos tipos de datos en el entorno SAS© Viya 4 con interacciones CASL.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP, garantizando su autonomía y ejecución directa.

1 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo simple crea una tabla CAS llamada `fixed_char` con una columna `name` de tipo `CHAR(10)`. Los valores asignados tienen una longitud inferior o igual a 10 caracteres y se rellenarán con espacios a la derecha si es necesario. Se utiliza `proc print` para mostrar la tabla.
¡Copiado!
1/* Création d'une table CAS avec une colonne CHAR de longueur fixe */
2cas libref=casuser;
3 
4DATA casuser.fixed_char;
5 LENGTH name char(10);
6 name = 'Alice';
7 OUTPUT;
8 name = 'Bob';
9 OUTPUT;
10RUN;
11 
12/* Affichage du contenu de la table pour vérifier */
13PROC PRINT DATA=casuser.fixed_char;
14RUN;
15 
16/* Nettoyage */
17PROC CAS;
18 TABLE.dropTable RESULT=r / name='fixed_char' caslib='casuser';
19 PRINT r;
20RUN;
21QUIT;
2 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo utiliza el tipo `VARCHAR(50)` para la columna `description`. Se observa que los valores se almacenan con su longitud real sin relleno, incluso si son más cortos que la longitud máxima definida. Se utiliza `proc columnInfo` para inspeccionar los atributos de las columnas, incluyendo sus longitudes.
¡Copiado!
1/* Création d'une table CAS avec une colonne VARCHAR de longueur explicite */
2cas libref=casuser;
3 
4DATA casuser.varying_char_example;
5 LENGTH description varchar(50);
6 description = 'Ceci est une description courte.';
7 OUTPUT;
8 description = 'Ceci est une description beaucoup plus longue qui utilise plus de caractères.';
9 OUTPUT;
10 description = 'Court';
11 OUTPUT;
12RUN;
13 
14/* Affichage du contenu et des informations sur les colonnes pour vérifier les longueurs réelles */
15PROC PRINT DATA=casuser.varying_char_example;
16RUN;
17 
18PROC CAS;
19 TABLE.columnInfo RESULT=c / TABLE='varying_char_example' caslib='casuser';
20 PRINT c;
21RUN;
22QUIT;
23 
24/* Nettoyage */
25PROC CAS;
26 TABLE.dropTable RESULT=r / name='varying_char_example' caslib='casuser';
27 PRINT r;
28RUN;
29QUIT;
3 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo ilustra el uso del tipo `DOUBLE` para almacenar números con gran precisión, incluyendo números muy pequeños y muy grandes, así como valores faltantes. `proc columnInfo` confirma el tipo de columna, y `table.fetch` se utiliza para recuperar y mostrar los datos, demostrando la gestión de los valores faltantes y la precisión de los números flotantes.
¡Copiado!
1/* Création d'une table CAS avec une colonne DOUBLE incluant des valeurs manquantes et des nombres à haute précision */
2cas libref=casuser;
3 
4DATA casuser.double_advanced;
5 INPUT num_val;
6 DATALINES;
7100.123456789
8.
91.23456789123456789E-10
10-5.6789123456789E+12
11;
12RUN;
13 
14/* Affichage des informations sur les colonnes pour confirmer le type DOUBLE */
15PROC CAS;
16 TABLE.columnInfo RESULT=c / TABLE='double_advanced' caslib='casuser';
17 PRINT c;
18RUN;
19 
20/* Récupération et affichage des données pour montrer la précision et les manquants */
21PROC CAS;
22 TABLE.fetch RESULT=f / TABLE='double_advanced' caslib='casuser';
23 PRINT f;
24RUN;
25QUIT;
26 
27/* Nettoyage */
28PROC CAS;
29 TABLE.dropTable RESULT=r / name='double_advanced' caslib='casuser';
30 PRINT r;
31RUN;
32QUIT;
4 Bloque de código
DATA STEP / PROC CONTENTS Data
Explicación :
Este ejemplo avanzado muestra cómo los tipos `VARCHAR(*)` y `CHAR(n)` se comportan al copiar una tabla CAS a una biblioteca SAS estándar (no-CAS). Se observa que `VARCHAR(*)` puede convertirse en una columna `CHAR(32767)` en un contexto no-CAS, mientras que `CHAR(n)` conservará su longitud fija, truncando los datos si son demasiado largos. Se utiliza `PROC CONTENTS` para verificar las longitudes de las columnas después de la copia.
¡Copiado!
1/* Initialise une session CAS */
2cas libref=casuser;
3 
4/* Crée une table CAS avec une colonne VARCHAR(*) */
5DATA casuser.varchar_star_orig;
6 LENGTH comments varchar(*);
7 comments = 'Un commentaire.'; OUTPUT;
8 comments = 'Un commentaire très long, dont la taille maximale n''est pas prédéfinie, pour observer l''impact lors de la copie.'; OUTPUT;
9RUN;
10 
11/* Crée une table CAS avec une colonne CHAR(10) */
12DATA casuser.char_fixed_orig;
13 LENGTH short_text char(10);
14 short_text = 'Hello'; OUTPUT;
15 short_text = 'WorldLonger'; /* Sera tronqué */
16 OUTPUT;
17RUN;
18 
19/* Copie les tables CAS vers une bibliothèque de travail SAS standard */
20/* Remarque: La bibliothèque WORK est un chemin local non-CAS. */
21/* Pour une exécution hors de SAS Studio/Viya, ajuster le LIBNAME si nécessaire */
22LIBNAME work clear;
23 
24DATA work.varchar_star_copy;
25 SET casuser.varchar_star_orig;
26RUN;
27 
28DATA work.char_fixed_copy;
29 SET casuser.char_fixed_orig;
30RUN;
31 
32/* Vérifie les attributs des colonnes dans la table copiée */
33PROC CONTENTS DATA=work.varchar_star_copy varnum; RUN;
34PROC CONTENTS DATA=work.char_fixed_copy varnum; RUN;
35 
36/* Affiche le contenu de la table CHAR pour voir la troncature */
37PROC PRINT DATA=work.char_fixed_copy;
38RUN;
39 
40/* Nettoyage des tables CAS */
41PROC CAS;
42 TABLE.dropTable RESULT=r / name='varchar_star_orig' caslib='casuser';
43 PRINT r;
44 TABLE.dropTable RESULT=r / name='char_fixed_orig' caslib='casuser';
45 PRINT r;
46RUN;
47QUIT;
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.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved.