Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
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 19/11/2007, 13h43   #1
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Par défaut Créer une librairie à partir d'une autre

bonjour tout le monde,

Comme je travaille avec des librairies qui contiennent de grosses bases SAS (des milliers) et comme je dois optimiser un programme, j'aimerais savoir si on peut créer une librairie bis qui contiendrait seulement les 20 premières observations de chacune de mes tables de la librairie.

En effet, impossible de mettre les tables dans ma clé USB de 1 GO.

merci de votre aide.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 17h31   #2
Membre du Club
 
Isabelle
Inscription : novembre 2007
Messages : 44
Détails du profil
Informations personnelles :
Nom : Isabelle
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2007
Messages : 44
Points : 57
Points : 57
Bonjour,

Soit lib1 la librairie de départ et lib1bis celle dans laquelle on mettra les echantillons des bases.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
* permet d'obtenir la liste de toutes les variables de toutes les tables contenues dans lib1;
proc contents data =  lib1._all_ out=nomstable noprint;
quit ;
 
* on ne conserve que les noms des tables;
proc sort data = nomstable (keep=MEMNAME) nodupkey ;
  by memname ;
run;
 
* on crée des macros variables contenant le nombre total de tables (nbt) 
  et on attribue à nomt&i le nom de la table &i;
data nomstable;
  set nomstable  ;	
  retain nbrt 0; 
  length nmv $ 40;
  nbrt+1;
  nmv=compress('nomt' !! put (nbrt,2.));
  CALL symput(nmv,memname)     ;
  call symput('nbt',put(nbrt,2.));
run;
 
* on copie chaque table de lib1 dans lib1bis en ne conservant que les 20 premieres observations;
%macro copier;
%do i = 1 %to &nbt;
data lib1bis. &&nomt&i;
  set lib1.  &&nomt&i (obs=20); 
run;
%end;
%mend;
%copier;
Il y a peut être plus simple mais ca fonctionne.
bab22 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2007, 12h31   #3
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 807
Points : 4 807
C clair que tu peux difficillement faire plus simple sur Sas.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2007, 18h20   #4
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Merci pour l'aide :

J'ai trouver un programme un peu plus simple :

Code :
1
2
3
4
5
6
proc datasets library=BIG nolist; 
   libname LITTLE 'H:\DPEI-FINANCES-REPORTING\Infocentre\Ashley Rmy\SAS'; 
   options obs=20; 
   copy out=little memtype=DATA; run; 
   options obs=max; 
   quit;
ash_rmy.
ash_rmy 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 16h10.


 
 
 
 
Partenaires

Hébergement Web