Publié le :
ETL CREATION_INTERNE

Gestion des données VARCHAR dans CAS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script initialise une session CAS et configure les CASLIBs. Il crée ensuite une table temporaire SAS© (`saswork_table_with_char300`) avec des variables caractère de 300, 15 et 16 octets respectivement. Après avoir examiné sa structure via PROC CONTENTS, il manipule un CASLIB `sas©7bdat` pour pointer vers le répertoire `WORK` de SAS©. Finalement, il charge la table créée dans CAS en utilisant `PROC CASUTIL` avec l'option `varcharconversion=16` pour gérer les variables caractère, puis affiche les informations de colonne de la table chargée dans CAS. Les manipulations de CASLIBs (`_all_ assign`, `dropCaslib`, `addcaslib`) sont des actions de niveau administration.
Analyse des données

Type : CREATION_INTERNE


La table `saswork_table_with_char300` est créée directement dans le script via un DATA step avec des `datalines` implicites.

1 Bloc de code
CAS Session Management
Explication :
Ce bloc initialise une session CAS, assigne tous les CASLIBs disponibles à la session, et définit une macro-variable `workpath` contenant le chemin d'accès au répertoire SAS WORK. Ceci est essentiel pour la gestion des données entre SAS et CAS. L'assignation de `caslib _all_` est une action d'administration.
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Ce DATA step crée la table temporaire `saswork_table_with_char300` dans la bibliothèque WORK. Il définit trois variables caractère (`a`, `b`, `c`) avec des longueurs initiales de 300, 15 et 16 octets respectivement, puis y insère trois observations. Cette table sera utilisée pour démontrer la conversion VARCHAR dans CAS.
Copié !
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 Bloc de code
PROC CONTENTS
Explication :
Cette procédure affiche les métadonnées de la table `saswork_table_with_char300`, y compris les noms de variables, les types et les longueurs. Cela permet de vérifier la structure de la table SAS avant son transfert vers CAS et de confirmer les longueurs des variables caractère.
Copié !
1 
2PROC CONTENTS
3DATA=saswork_table_with_char300;
4title "Contents of WORK.SASWORK_TABLE_WITH_CHAR300";
5RUN;
6 
4 Bloc de code
PROC CAS (CASLIB Management)
Explication :
Ce bloc utilise `PROC CAS` pour gérer un CASLIB nommé `sas7bdat`. Il tente d'abord de supprimer ce CASLIB s'il existe déjà (`dropCaslib`), puis le recrée (`addcaslib`) en le faisant pointer vers le chemin du répertoire SAS WORK (`&workpath`). Cette étape est nécessaire pour que CAS puisse accéder aux fichiers SAS stockés dans le répertoire WORK. La manipulation directe des CASLIBs est une action d'administration.
Copié !
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 Bloc de code
PROC CASUTIL Data
Explication :
Cette procédure charge la table `saswork_table_with_char300` (qui est enregistrée sur disque dans le répertoire WORK en tant que `saswork_table_with_char300.sas7bdat`) dans le serveur CAS sous le nom `cas_table_with_varchar` dans le CASLIB `casuser`. L'option `varcharconversion=16` est cruciale ici : elle force les variables caractère SAS dont la longueur est supérieure à 16 octets à être converties en type VARCHAR dans CAS, ce qui permet un stockage plus efficace des chaînes de caractères de longueur variable et optimise l'utilisation de la mémoire dans CAS.
Copié !
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 Bloc de code
PROC CAS (Table Inspection)
Explication :
Ce dernier bloc utilise `PROC CAS` pour définir les options de session sur le CASLIB `casuser`, puis appelle l'action CAS `table.columninfo` pour afficher les métadonnées détaillées des colonnes de la table CAS `cas_table_with_varchar`. Ceci permet de vérifier comment les variables caractère ont été gérées après la conversion VARCHAR, notamment de confirmer que les variables 'a' et 'c' ont été converties en VARCHAR.
Copié !
1PROC CAS;
2 sessionProp.setSessOpt /
3 caslib="casuser";
4RUN;
5 TABLE.columninfo / TABLE="cas_table_with_varchar";
6QUIT;
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.
Informations de Copyright : Copyright © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0