Publicado el :
Général CREACION_INTERNA

Sans titre

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
El script inicializa una sesión CAS y configura los CASLIBs. Luego crea una tabla SAS© temporal (`saswork_table_with_char300`) con variables de caracteres de 300, 15 y 16 bytes respectivamente. Después de examinar su estructura a través de PROC CONTENTS, manipula un CASLIB `sas©7bdat` para que apunte al directorio `WORK` de SAS©. Finalmente, carga la tabla creada en CAS utilizando `PROC CASUTIL` con la opción `varcharconversion=16` para gestionar las variables de caracteres, y luego muestra la información de la columna de la tabla cargada en CAS. Las manipulaciones de CASLIBs (`_all_ assign`, `dropCaslib`, `addcaslib`) son acciones a nivel de administración.
Análisis de datos

Type : CREACION_INTERNA


La tabla `saswork_table_with_char300` se crea directamente en el script a través de un paso DATA con `datalines` implícitas.

1 Bloque de código
Gestión de Sesión CAS
Explicación :
Este bloque inicializa una sesión CAS, asigna todos los CASLIBs disponibles a la sesión y define una macrovariable `workpath` que contiene la ruta al directorio SAS WORK. Esto es esencial para la gestión de datos entre SAS y CAS. La asignación de `caslib _all_` es una acción de administración.
¡Copiado!
1/*
2Copyright © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
3SPDX-License-Identifier: Apache-2.0
4*/
5/* cas casauto terminate; */
6cas;
7caslib _all_ assign;
8 
9/* WORKPATH contains the path to SASWORK */
10%let workpath = %sysfunc(quote(%sysfunc(pathname(work)))) ;
11%put &workpath;
2 Bloque de código
PASO DATA Data
Explicación :
Este paso DATA crea la tabla temporal `saswork_table_with_char300` en la biblioteca WORK. Define tres variables de caracteres (`a`, `b`, `c`) con longitudes iniciales de 300, 15 y 16 bytes respectivamente, y luego inserta tres observaciones. Esta tabla se utilizará para demostrar la conversión VARCHAR en CAS.
¡Copiado!
1DATA saswork_table_with_char300;
2 LENGTH a $ 300 b $ 15 c $ 16;
3 a='a300'; b='b15' ; c='c16' ;
4 OUTPUT;
5 a='a300300'; b='b151515'; c='c161616';
6 OUTPUT;
7 c='c161616161616161';
8 b='b15151515151515';
9 a="a300qzwsxedcrfvtgbyhnujmiklopqazwsxedcrfvtgbyhnujmikolp1234567890123456789012345678901234567890";
10 OUTPUT;
11RUN;
3 Bloque de código
PROC CONTENTS
Explicación :
Este procedimiento muestra los metadatos de la tabla `saswork_table_with_char300`, incluyendo los nombres de las variables, los tipos y las longitudes. Esto permite verificar la estructura de la tabla SAS antes de su transferencia a CAS y confirmar las longitudes de las variables de caracteres.
¡Copiado!
1 
2PROC CONTENTS
3DATA=saswork_table_with_char300;
4title "Contents of WORK.SASWORK_TABLE_WITH_CHAR300";
5RUN;
6 
4 Bloque de código
PROC CAS (Gestión de CASLIB)
Explicación :
Este bloque utiliza `PROC CAS` para gestionar un CASLIB llamado `sas7bdat`. Primero intenta eliminar este CASLIB si ya existe (`dropCaslib`), luego lo recrea (`addcaslib`) haciéndolo apuntar a la ruta del directorio SAS WORK (`&workpath`). Este paso es necesario para que CAS pueda acceder a los archivos SAS almacenados en el directorio WORK. La manipulación directa de los CASLIBs es una acción de administración.
¡Copiado!
1PROC CAS;
2 file log;
3 TABLE.dropCaslib /
4 caslib='sas7bdat' quiet = true;
5 RUN;
6 addcaslib /
7 datasource={srctype="path"}
8 name="sas7bdat"
9 path=&workpath ;
10 RUN;
5 Bloque de código
PROC CASUTIL Data
Explicación :
Este procedimiento carga la tabla `saswork_table_with_char300` (que se guarda en disco en el directorio WORK como `saswork_table_with_char300.sas7bdat`) en el servidor CAS bajo el nombre `cas_table_with_varchar` en el CASLIB `casuser`. La opción `varcharconversion=16` es crucial aquí: fuerza a que las variables de caracteres SAS cuya longitud es superior a 16 bytes se conviertan al tipo VARCHAR en CAS, lo que permite un almacenamiento más eficiente de las cadenas de caracteres de longitud variable y optimiza el uso de la memoria en CAS.
¡Copiado!
1PROC CASUTIL;
2 load casdata="saswork_table_with_char300.sas7bdat"
3 casout="cas_table_with_varchar"
4 outcaslib="casuser"
5 importoptions=(filetype="basesas", dtm="auto", debug="dmsglvli", varcharconversion=16) ;
6RUN;
7QUIT;
8 
9title;
6 Bloque de código
PROC CAS (Inspección de Tabla)
Explicación :
Este último bloque utiliza `PROC CAS` para definir las opciones de sesión en el CASLIB `casuser`, y luego llama a la acción CAS `table.columninfo` para mostrar los metadatos detallados de las columnas de la tabla CAS `cas_table_with_varchar`. Esto permite verificar cómo se han gestionado las variables de caracteres después de la conversión VARCHAR, en particular para confirmar que las variables 'a' y 'c' se han convertido a VARCHAR.
¡Copiado!
1PROC CAS;
2 sessionProp.setSessOpt /
3 caslib="casuser";
4RUN;
5 TABLE.columninfo / TABLE="cas_table_with_varchar";
6QUIT;
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 © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0