Publié le :
Administration CREATION_INTERNE

Conversion de CHARACTER en 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.
Ce code SAS© illustre les étapes pour configurer un CASLIB, créer une table SAS© avec des colonnes de type CHARACTER, puis utiliser PROC CASUTIL avec l'option VARCHARCONVERSION pour charger cette table dans CAS en convertissant les colonnes CHARACTER en VARCHAR. Il inclut également des étapes pour gérer les CASLIBs existants et inspecter la structure de la table convertie afin de vérifier l'application des nouveaux types de données.
Analyse des données

Type : CREATION_INTERNE


Les données (`table_with_char`) sont créées directement dans le script via un DATA STEP, puis utilisées comme source pour illustrer la conversion des types CHARACTER en VARCHAR lors du chargement dans CAS. Le `&datapath` est utilisé pour définir le chemin d'un CASLIB, mais ne représente pas une source de données externe non gérée par le script.

1 Bloc de code
LIBNAME/OPTIONS
Explication :
Définit un LIBNAME `CASWORK` pour accéder au CASLIB `casuser` dans CAS. Modifie l'option `USER` pour que toutes les tables à un seul niveau soient créées par défaut dans `CASWORK` (donc dans CAS). Affiche la référence de session CAS active.
Copié !
1LIBNAME CASWORK cas caslib=casuser;
2options USER = CASWORK;
3%put &_sessref_;
4 
2 Bloc de code
PROC CAS
Explication :
Utilise PROC CAS pour interagir directement avec le serveur CAS. Les actions `table.dropCaslib` suppriment les CASLIBs 'sas7bdat' et 'sashdat' s'ils existent, sans générer d'erreur s'ils sont absents (`quiet = true`). L'action `addcaslib` ajoute ensuite un nouveau CASLIB nommé 'sas7bdat' qui pointe vers un chemin spécifié par la macro-variable `&datapath`, ce qui est une étape administrative pour gérer les sources de données CAS.
Copié !
1PROC CAS;
2 file log;
3 TABLE.dropCaslib /
4 caslib='sas7bdat' quiet = true;
5RUN;
6 TABLE.dropCaslib /
7 caslib='sashdat' quiet = true;
8RUN;
9 addcaslib /
10 datasource={srctype="path"}
11 name="sas7bdat"
12 path="&datapath" ;
13 RUN;
14QUIT;
3 Bloc de code
CASLIB Statement
Explication :
La déclaration `caslib _all_ assign;` lie tous les CASLIBs définis dans la session CAS à la session SAS cliente, les rendant accessibles via leurs LIBNAMEs SAS correspondants.
Copié !
1caslib _all_ assign;
4 Bloc de code
DATA STEP Data
Explication :
Un DATA STEP est utilisé pour créer une table SAS nommée `table_with_char` dans le CASLIB `sas7bdat`. Cette table est définie avec trois variables de type CHARACTER (`a`, `b`, `c`) de différentes longueurs, et est remplie de données de test, y compris des chaînes intentionnellement longues pour illustrer l'efficacité de la conversion VARCHAR.
Copié !
1DATA sas7bdat.table_with_char;
2 LENGTH a $ 300 b $ 15 c $ 16;
3 a='a300'; b='b15' ; c='c16' ; OUTPUT;
4 a='a300300'; b='b151515'; c='c161616'; OUTPUT;
5 c='c161616161616161';
6 b='b15151515151515';
7 a="a300qzwsxedcrfvtgbyhnujmiklopqazwsxedcrfvtgbyhnujmikolp12345678901234567890123456789012345678901234567890123456789012345678901234567890"; OUTPUT;
8RUN;
5 Bloc de code
PROC CASUTIL
Explication :
PROC CASUTIL est invoquée pour charger la table SAS `table_with_char` (située dans le CASLIB `sas7bdat`) vers le CASLIB `casuser` sous le nouveau nom `table_with_varchar`. L'option `importoptions=(varcharconversion=16)` est cruciale : elle indique à CAS de convertir automatiquement les variables de type CHARACTER en VARCHAR, avec un seuil de 16 octets, optimisant ainsi le stockage en utilisant la longueur réelle des chaînes au lieu de leur longueur maximale prédéfinie.
Copié !
1PROC CASUTIL;
2 load casdata="table_with_char.sas7bdat" incaslib="sas7bdat" outcaslib="casuser"
3 casout="table_with_varchar" importoptions=(filetype="basesas" varcharconversion=16) replace;
4RUN;
6 Bloc de code
PROC CAS
Explication :
Ce bloc utilise PROC CAS pour d'abord définir le CASLIB par défaut de la session sur `casuser` via `sessionProp.setSessOpt`. Ensuite, l'action `table.columninfo` est exécutée pour afficher les informations détaillées sur les colonnes de la table `table_with_varchar` dans CAS. Cela permet de vérifier que la conversion des types de données de CHARACTER à VARCHAR a bien été appliquée.
Copié !
1PROC CAS;
2 sessionProp.setSessOpt /
3 caslib="casuser";
4RUN;
5 TABLE.columninfo / TABLE="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


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Le passage au VARCHAR est un levier de performance souvent sous-estimé. En couplant cette conversion à l'action table.columninfo, l'administrateur valide non seulement le gain technique, mais assure aussi une meilleure fluidité des traitements analytiques en aval. C'est une étape de préparation de données (Data Prep) essentielle pour quiconque travaille sur des volumes de données textuelles importants dans un environnement distribué. »