Publié le :
Administration CREATION_INTERNE

Promouvoir une bibliothèque de formats

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Cette fonctionnalité permet de promouvoir une bibliothèque de formats SAS© (souvent créée via PROC FORMAT) vers un caslib global ou de la rendre accessible à d'autres utilisateurs CAS. Cela est crucial dans un environnement distribué comme SAS© Viya pour garantir que les formats personnalisés sont reconnus et appliqués correctement lors du traitement des données en mémoire dans CAS. La 'promotion' dans ce contexte signifie rendre ces formats persistants et partageables au sein de l'environnement CAS, typiquement en les stockant dans un caslib approprié. Cela évite d'avoir à redéfinir les formats pour chaque session ou pour chaque utilisateur et assure une cohérence dans l'interprétation des données.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP pour créer et promouvoir une bibliothèque de formats directement au sein de caslibs.

1 Bloc de code
PROC FORMAT, PROC CAS Data
Explication :
Cet exemple illustre la manière la plus courante de 'promouvoir' des formats dans SAS Viya : en les créant directement dans un caslib désigné pour les formats (ici, 'myglobalformats'). Cela rend le format '$genderfmt' et 'agegrpfmt' immédiatement disponibles pour toutes les opérations ultérieures dans le caslib spécifié et potentiellement pour d'autres utilisateurs si le caslib est global et permanent. Il définit des formats et les applique à une nouvelle table CAS.
Copié !
1options casopts=(caslib=casuser timeout=900);
2cas casauto;
3 
4PROC CAS;
5 SESSION casauto.addcaslib / caslib='myglobalformats' path='&_TEMP_/myformats' subdirs=true datasource=(srctype='path');
6QUIT;
7 
8PROC FORMAT lib=myglobalformats;
9 value $genderfmt
10 'M' = 'Masculin'
11 'F' = 'Féminin';
12 value agegrpfmt
13 low-<18 = 'Mineur'
14 18-high = 'Adulte';
15RUN;
16 
17PROC CAS;
18 SESSION casauto.addFmtSearchPath / searchPath={'myglobalformats'};
19QUIT;
20 
21DATA casuser.clients (promote=yes);
22 INPUT Name $ Gender $ Age;
23 FORMAT Gender $genderfmt. Age agegrpfmt.;
24DATALINES;
25Alice F 25
26Bob M 17
27Carol F 30
28David M 20
29;
30RUN;
31 
32PROC PRINT DATA=casuser.clients;
33RUN;
34 
35PROC CAS;
36 SESSION casauto.removeFmtSearchPath / searchPath={'myglobalformats'};
37 SESSION casauto.dropcaslib / caslib='myglobalformats';
38QUIT;
2 Bloc de code
PROC FORMAT, DATA STEP Data
Explication :
Cet exemple simule l'utilisation d'un format `$statusfmt` qui a été 'promu' (rendu disponible dans un caslib 'myglobalformats'). Il montre comment s'assurer que le caslib contenant les formats est dans le chemin de recherche de formats de la session CAS (`addFmtSearchPath`) puis comment appliquer ce format à de nouvelles données créées dans un DATA step s'exécutant en mode CAS. Il met en évidence l'accessibilité du format après sa 'promotion'.
Copié !
1options casopts=(caslib=casuser timeout=900);
2cas casauto;
3 
4PROC CAS;
5 SESSION casauto.addcaslib / caslib='myglobalformats' path='&_TEMP_/myformats' subdirs=true datasource=(srctype='path');
6QUIT;
7 
8PROC FORMAT lib=myglobalformats;
9 value $statusfmt
10 'A' = 'Actif'
11 'I' = 'Inactif'
12 'X' = 'En attente'
13 other = 'Inconnu';
14RUN;
15 
16PROC CAS;
17 SESSION casauto.addFmtSearchPath / searchPath={'myglobalformats'};
18QUIT;
19 
20DATA casuser.ventes (promote=yes);
21 INPUT Produit $ StatutCommande $ Montant;
22 FORMAT StatutCommande $statusfmt.;
23DATALINES;
24PC A 1200
25Souris I 25
26Clavier A 80
27Ecran X 300
28;
29RUN;
30 
31PROC PRINT DATA=casuser.ventes;
32RUN;
33 
34PROC CAS;
35 SESSION casauto.removeFmtSearchPath / searchPath={'myglobalformats'};
36 SESSION casauto.dropcaslib / caslib='myglobalformats';
37QUIT;
3 Bloc de code
PROC FORMAT, %MACRO, PROC CAS Data
Explication :
Cet exemple avancé utilise une macro SAS pour dynamiser la création et la 'promotion' d'un format. Il montre comment un format peut être créé et rendu disponible dans un caslib via une macro. De plus, il illustre un scénario de gestion de conflit où un format avec le même nom est redéfini, et comment le système utilise la définition la plus récente ou la plus prioritaire dans le chemin de recherche de formats.
Copié !
1options casopts=(caslib=casuser timeout=900);
2cas casauto;
3 
4PROC CAS;
5 SESSION casauto.addcaslib / caslib='dynamicformats' path='&_TEMP_/dynamicformats' subdirs=true datasource=(srctype='path');
6QUIT;
7 
8%macro create_and_promote_format(LIBNAME, fmtname);
9 PROC FORMAT lib=&LIBNAME;
10 value &fmtname
11 1 = 'Faible'
12 2 = 'Moyen'
13 3 = 'Élevé';
14 RUN;
15
16 PROC CAS;
17 SESSION casauto.addFmtSearchPath / searchPath={'&libname'};
18 QUIT;
19%mend;
20 
21%create_and_promote_format(LIBNAME=dynamicformats, fmtname=level);
22 
23PROC FORMAT lib=dynamicformats;
24 value level
25 1 = 'Bas'
26 2 = 'Moy'
27 3 = 'Haut';
28RUN;
29 
30DATA casuser.evaluations;
31 INPUT ID Niveau;
32 FORMAT Niveau level.;
33DATALINES;
34101 1
35102 2
36103 3
37;
38RUN;
39 
40PROC PRINT DATA=casuser.evaluations;
41RUN;
42 
43PROC CAS;
44 SESSION casauto.removeFmtSearchPath / searchPath={'dynamicformats'};
45 SESSION casauto.dropcaslib / caslib='dynamicformats';
46QUIT;
4 Bloc de code
PROC FORMAT, PROC CAS, DATA STEP Data
Explication :
Cet exemple se concentre sur la gestion du cycle de vie des formats 'promus' dans SAS Viya. Il montre comment vérifier quels caslibs sont actuellement inclus dans le chemin de recherche de formats d'une session CAS via `listFmtSearchPath`. Ensuite, il démontre comment retirer explicitement un caslib du chemin de recherche (`removeFmtSearchPath`) et comment nettoyer les ressources temporaires (le caslib lui-même) après utilisation, ce qui est essentiel pour la gestion des ressources dans un environnement CAS partagé.
Copié !
1options casopts=(caslib=casuser timeout=900);
2cas casauto;
3 
4PROC CAS;
5 SESSION casauto.addcaslib / caslib='temp_formats' path='&_TEMP_/temp_formats' subdirs=true datasource=(srctype='path');
6QUIT;
7 
8PROC FORMAT lib=temp_formats;
9 value $yesnofmt
10 'Y' = 'Oui'
11 'N' = 'Non';
12RUN;
13 
14PROC CAS;
15 SESSION casauto.addFmtSearchPath / searchPath={'temp_formats'};
16QUIT;
17 
18PROC CAS;
19 SESSION casauto.listFmtSearchPath;
20QUIT;
21 
22DATA casuser.sondage;
23 INPUT Question $ Reponse $;
24 FORMAT Reponse $yesnofmt.;
25DATALINES;
26Q1 Y
27Q2 N
28;
29RUN;
30 
31PROC PRINT DATA=casuser.sondage;
32RUN;
33 
34PROC CAS;
35 SESSION casauto.removeFmtSearchPath / searchPath={'temp_formats'};
36QUIT;
37 
38PROC CAS;
39 SESSION casauto.listFmtSearchPath;
40QUIT;
41 
42PROC CAS;
43 SESSION casauto.dropcaslib / caslib='temp_formats' _all_=true;
44QUIT;
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.