Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/12/2011, 14h02   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 3
Points : 3
Par défaut Importer des catalogues de format

Bonjour à tous,
j'ai un petit souci, une personne m'a transmis des catalogues de format (formats.sas7bcat) mais après de multiples recherches, je n'arrive pas à les importer de manière définitive sous SAS.
Quelle est la procédure à suivre?
Je vous remercie par avance de vos réponses.
Natacha
5natacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 14h20   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bonjour Natacha.
Importer des formats ? S'ils sont déjà dans un catalogue, ils sont dans le principal format de stockage qu'utilise SAS pour des informations de ce type.
Pour t'en servir, il faut enregistrer le catalogue dans un répertoire (mettons c:\temp pour faire un exemple) et :
1) soit tu crées une bibliothèque LIBRARY qui pointe sur c:\temp et SAS utilisera automatiquement les formats de cette bibliothèque
2) soit tu crées une bibliothèque avec un nom de ton choix, puis tu indiques à SAS qu'il y a des formats dedans avec l'option FMTSEARCH. Tu peux également lister le descriptif des formats avec l'option FMTLIB dans la proc FORMAT.
Code :
1
2
3
4
LIBNAME fmt "c:\temp" ;
OPTION FMTSEARCH=(work library fmt) NOFMTERR ;
PROC FORMAT LIB=fmt FMTLIB ;
RUN ;
L'option NOFMTERR est là pour indiquer que si on sollicite un format inconnu, SAS ne plante pas (un comportement assez désagréable par défaut).
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/12/2011, 15h58   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 3
Points : 3
Merci j'ai à peu près compris, mais j'ai encore un souci : dans mon viewer le label est coupé à 40 caractères alors qu'il en contient bcp plus!!
Je sais pas si c'est trés claire.
Merci d'avance.
Fichiers attachés
Type de fichier : docx Doc1.docx (150,9 Ko, 3 affichages)
5natacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 16h12   #4
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Effectivement on voit en haut de ta sortie que ton plus long label fait 259 caractères (MAX dans l'en-tête du tableau capturé).
FMTLIB est un bel outil descriptif, mais il est un peu daté dans la mise en page des sorties. Tu peux obtenir quelque chose de plus sexy avec l'option CNTLOUT qui stocke dans une table SAS le descriptif de tes formats ; tu peux ensuite relire les portions de cette table qui t'intéressent avec une gentille proc PRINT.
Code :
1
2
3
4
5
PROC FORMAT LIB=fmt CNTLOUT=work.description ;
RUN ;
PROC PRINT DATA=work.description (WHERE=(fmtname = "DIPT2A")) NOOBS ;
  VAR start label ;
RUN ;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 18h50   #5
Invité de passage
 
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 3
Points : 3
Bonsoir,
j'ai fais un code, mais ça ne fonctionne pas.
Je suis pas tres douée!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
LIBNAME fmt "D:\sas" ;
OPTION FMTSEARCH=(work library fmt) NOFMTERR ;
 
PROC FORMAT LIB=fmt CNTLOUT=work.description ;
RUN ;
PROC PRINT DATA=work.description (WHERE=(fmtname = "DIPT2A")) NOOBS ;
  VAR start label ;
RUN ;
proc format LIB=fmt fmtlib ;
   SELECT $dipt2a $dipt2b;
   run;
   proc printto file='C:\Users\bourbonn\Desktop\SISE\formatdip.txt' ;
run;
5natacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 21h10   #6
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bonsoir.
Peu de modifications à faire, tu étais très près de la solution (et j'avais compliqué avec mon WHERE finalement inutile).
Code :
1
2
3
4
5
6
7
8
9
LIBNAME fmt "D:\sas" ;
OPTION FMTSEARCH=(work library fmt) NOFMTERR ;
PROC FORMAT LIB=fmt CNTLOUT=work.description ;
  SELECT $dipt2a $dipt2b;
RUN ;
PROC PRINT DATA=work.description NOOBS ;
BY fmtname ;
VAR start label ;
RUN ;
Est-ce que ça te convient ainsi ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 09h23   #7
Invité de passage
 
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 3
Points : 3
Bonjour,
merci beaucoup, ce code fonctionne parfaitement.
Est il possible de d'extraire mon format en .txt.

J'ai fait :


Code :
1
2
proc printto file='C:\Users\bourbonn\Desktop\SISE\formatdip.txt' ;
run;

Mais ça ne fonctionne pas, j'ai bien un fichier qui se créée mais aucune données à l'intérieur (dommage!).

Je vous remercie par avance.
Natacha
5natacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 13h27   #8
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Attention, la proc PRINTTO c'est pour mettre dans un fichier texte le contenu d'une fenêtre de SAS (la Log ou l'Output). Si tu veux créer un fichier texte avec le contenu d'une table, le plus simple est la proc EXPORT.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/12/2011, 08h52   #9
Invité de passage
 
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 3
Points : 3
Bonjour,
j'ai tenté de faire un proc export mais ça fonctionne pas. Je vous transmets mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
LIBNAME fmt "D:\sas" ;
OPTION FMTSEARCH=(work library fmt) NOFMTERR ;
PROC FORMAT LIB=fmt CNTLOUT=work.description ;
  SELECT $dipt2a $dipt2b;
RUN ;
PROC PRINT DATA=work.description NOOBS ;
BY fmtname ;
VAR start label ;
RUN ;
 
LIBNAME FORMATS  "C:\FMT" ;
 
PROC EXPORT
   DATA = FORMATS.dipt2a 
   OUTFILE = 'C:\Users\bourbonn\Desktop\SISE\dipt2a.txt'  
   REPLACE
   DBMS = DLM ;
DELIMITER = ',' ;
RUN;
Je vous remercie par avance pour vos suggestions.
Natacha
5natacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 09h08   #10
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
C'est la table DESCRIPTION qu'on exporte avec la proc EXPORT, pas directement le catalogue.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
LIBNAME fmt "D:\sas" ;
OPTION FMTSEARCH=(work library fmt) NOFMTERR ;
PROC FORMAT LIB=fmt CNTLOUT=work.description (KEEP=fmtname start label) ;
  SELECT $dipt2a $dipt2b;
RUN ;
PROC EXPORT
   DATA = work.description 
   OUTFILE = 'C:\Users\bourbonn\Desktop\SISE\dipt2a.txt'  
   REPLACE
   DBMS = DLM ;
DELIMITER = ',' ;
RUN;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 09h27   #11
Invité de passage
 
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 3
Points : 3
Merci beaucoup ça fonctionne.
Bonne journée.
Natacha
5natacha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h29.


 
 
 
 
Partenaires

Hébergement Web