Publicado el :
Administración CREATION_INTERNE

Promover una biblioteca de formatos

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.
Esta funcionalidad permite promover una biblioteca de formatos SAS© (a menudo creada a través de PROC FORMAT) a un caslib global o hacerla accesible a otros usuarios de CAS. Esto es crucial en un entorno distribuido como SAS© Viya para garantizar que los formatos personalizados sean reconocidos y aplicados correctamente durante el procesamiento de datos en memoria en CAS. La 'promoción' en este contexto significa hacer que estos formatos sean persistentes y compartibles dentro del entorno CAS, típicamente almacenándolos en un caslib apropiado. Esto evita tener que redefinir los formatos para cada sesión o para cada usuario y asegura una coherencia en la interpretación de los datos.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP para crear y promover una biblioteca de formatos directamente dentro de los caslibs.

1 Bloque de código
PROC FORMAT, PROC CAS Data
Explicación :
Este ejemplo ilustra la forma más común de 'promover' formatos en SAS Viya: creándolos directamente en un caslib designado para formatos (aquí, 'myglobalformats'). Esto hace que los formatos '$genderfmt' y 'agegrpfmt' estén inmediatamente disponibles para todas las operaciones posteriores en el caslib especificado y potencialmente para otros usuarios si el caslib es global y permanente. Define formatos y los aplica a una nueva tabla CAS.
¡Copiado!
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 Bloque de código
PROC FORMAT, DATA STEP Data
¡Copiado!
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 Bloque de código
PROC FORMAT, %MACRO, PROC CAS Data
¡Copiado!
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 Bloque de código
PROC FORMAT, PROC CAS, DATA STEP Data
¡Copiado!
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;
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.