Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    Profil pro
    Collégien
    Inscrit en
    janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : janvier 2008
    Messages : 121
    Points : 96
    Points
    96

    Par défaut Lister des informations complémentaires pour tous les champs de toutes mes tables

    Bonjour à tous et à toutes,

    J'aimerai, en complément de SASHELP.VCOLUMN avoir plus d'informations sur mes champs

    - nombre de valeurs distinctes
    - nombre d'enregistrement de chaque table
    - dans l'idéal, mes min, max, moyenne et variance pour les champs numériques

    j'ai commencé à chercher un peu dans tous les sens, mais j'ai des problèmes de grammaire à un stade assez précoce, étant donné mon niveau très basique, aussi je me tourne vers la communauté

    on me dit d'utiliser les PROC FREQ et PROC MEANS mais quand j'appelle avec MALIB._ALL_ ça ne semble pas accepté alors que si je fais une proc contents ça marche le _ALL_

    Merci à tous pour votre aide
    Gorzyne

  2. #2
    Membre régulier
    Profil pro
    Collégien
    Inscrit en
    janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : janvier 2008
    Messages : 121
    Points : 96
    Points
    96

    Par défaut

    Bon j'ai une solution qui vaut ce qu'elle vaut, mais en fait je me suis rendu compte que c'est juste archi-gourmand en ressources

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_;
      set yourdata;
      call execute(cats('proc freq data=MALIBNAME.',memname,'; tables _character_ / out=',memname,'_freq; run;'));
    run;
    Gorz

  3. #3
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    juillet 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2011
    Messages : 412
    Points : 1 033
    Points
    1 033
    Billets dans le blog
    13

    Par défaut

    Bonjour,

    Une autre solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    option symbolgen mprint mlogic;
     
      %macro names(table=);
     
        %let dsid=%sysfunc(open(&table,i));
     
        %do i=1 %to %sysfunc(attrn(&dsid,nvars));
     
     
        %global varlist;
     
         %let varlist= %sysfunc(varname(&dsid,&i));
     
          %global varlist   ;
    	  %global vartype&i;
    	  %global mac_dist_&varlist;
     
          data _null_;
          if 0 then set &table;
          call symputx ('vartype'||strip(&i), vtype( &varlist ) );
          run;
     
         %if &&vartype&i = N %then %do;
    	 %global mac_min_&varlist;
     
         proc sql noprint;
         select min( &varlist) into : mac_min_&varlist from &table ;
         quit ;
         %end;
     
         proc sql noprint;
         select count(distinct &varlist) into : mac_dist_&varlist from &table ;
         quit ;
         %put  &&mac_&varlist;
         %end;
     
        %let  rc=close(&dsid);
     
      %mend names;
     
      %names(table=sashelp.class);
     
     
     
    proc sql;
    create table macro as select  value,  scan(name,3,'_') as name, scan(name,2,'_') as stat from sashelp.vmacro
    where substr(name,1,8)='MAC_DIST' or substr(name,1,7)='MAC_MIN'
    order by name, stat;
    quit;
     
    proc transpose data =macro out=macro1(drop =_NAME_ _LABEL_) ; by name; id stat;var value; run;
     
     
    proc sql;
     
    create table discription as select t.*, t1.dist, t1.min
    from
     
    (select * from sashelp.vcolumn 
    where libname ='SASHELP' and memname ='CLASS') as t
     
    inner join 
    (select  name, dist, min from macro1) as t1
    on upcase(t.name)=upcase(t1.name)
    ;
    quit;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Gérer un historique de modication pour tous les champs de toutes les tables ?
    Par marot_r dans le forum Modélisation
    Réponses: 2
    Dernier message: 17/03/2015, 18h43
  2. [1.x] Comment activer le trim pour tous les champs
    Par lr dans le forum Symfony
    Réponses: 4
    Dernier message: 21/01/2010, 13h42
  3. VARCHAR2(2000) pour tous les champs ?
    Par DevTeam_ dans le forum Débuter
    Réponses: 2
    Dernier message: 12/02/2009, 13h04
  4. Dédié : affichage des erreurs php pour tous les domaines
    Par renaud26 dans le forum Administration système
    Réponses: 2
    Dernier message: 30/05/2008, 18h14
  5. [Rave 6 BE]Valeur "Invalid" pour tous les champs !
    Par Giovanny Temgoua dans le forum Rave
    Réponses: 4
    Dernier message: 19/10/2006, 23h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo