IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macro Discussion :

Comptage avec stockage dans macro


Sujet :

Macro

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 604
    Points
    4 604
    Par défaut Comptage avec stockage dans macro
    Bonjour,

    Je souhaite générer un comptage via une proc sql et envoyer le resultat dans une variable. J'ai bien pris soin de déclarer la macro et la variable.

    Code SAS : 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
    %mend test_macro;
     
    proc sql;
     
    /* comptage des lignes */
     
    create table tbfvsana_cptg as
     
    select count(idano) as cptg /* nombre de lignes + 1 pour continuer la numerotation */
    into :cptg
    from Datalab1.tbfvsana;
     
    run;
     
    %test_macro;
     
    /* affichage du resultat dans le journal */
     
    %put nombre de lignes : &cptg;

    La macro n'est pas lu .

    Et j'ai aussi ce message en turquoise qui me dit que SAs ne sait pas a quoi correspond la référence de la variable .

    Code SAS journal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    %put nombre de lignes : &cptg; /* non affichage du resultat du nombre de ligne stockées ? */
    WARNING: Apparent symbolic reference CPTG not resolved.

    Si une ame charitable peut eclairer ma lanterne

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Septembre 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 29
    Points : 38
    Points
    38
    Par défaut
    Hello tanaka,

    Je ne pense pas que tu puisses mettre un "create table" et un "into:" dans la même instruction.
    Il y a toutes les chances que SAS ignore le "into:" à cause de ça.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 604
    Points
    4 604
    Par défaut
    Bonjour,

    J'ai testé cette macro qui deviens récalcitrante :

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %macro test(var=);
     
    count(&var);
     
    %mend;
     
    data work.temp;
    set mybdd.mytable;
    call symput(myfield);
     
    run ;

    J'ai aussi ce message d'erreur dans le journal SAS

    Code journal sas : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 252-185: The SYMPUT subroutine call does not have enough arguments.

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

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    J'ai pas bien compris la demande:
    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
     
    %macro test_macro;
     
    proc sql;
     
    /* comptage des lignes */
     
    create table tbfvsana_cptg as
     
    select count(*)+1 as cptg /* nombre de lignes + 1 pour continuer la numerotation */
     
    from sashelp.class;
     
     
    %global cptg;
     
    select cptg into: cptg from tbfvsana_cptg;
    quit;
     
    %mend; 
     
    %test_macro;
     
    /* affichage du resultat dans le journal */
     
    %put nombre de lignes : &cptg;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 604
    Points
    4 604
    Par défaut
    Bonjour,

    Le but est d'avoir une macro ou je balance le nom de l'univers de données + la nom de la table . La macro me sort " il y a XXX lignes" avec l'informations stockée dans une table de sortie et dans les logs du journal.

    Après moultes recherches j'ai trouvé ceci :

    Code SAS : 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
    %macro countrecs (dsn=);
     
       proc sql noprint;
     
       create table counts as 
     
       select count(*) as record_count 
     
       from &dsn;
     
       quit;
     
       data _null_;
     
          set counts;
     
          call symputx('nb_line', record_count, 'G');
     
       run;
     
    %mend countrecs;
     
    %countrecs (dsn=mabdd.matable)
     
    %put Number of lines: &nb_line;

    J'ai bien une table de sortie avec un résultat + un affichage dans le journal .

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

Discussions similaires

  1. Copier coller image d'un graphique avec stockage dans une variable
    Par antonysansh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/02/2017, 16h00
  2. Php panier virtuel avec stockage de la quantité dans une table temporaire
    Par otmaneha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/08/2011, 11h06
  3. Réponses: 0
    Dernier message: 11/01/2010, 10h49
  4. Boucle dans macro SAS avec BY
    Par fafabzh6 dans le forum Macro
    Réponses: 5
    Dernier message: 17/06/2008, 12h08
  5. Réponses: 2
    Dernier message: 19/05/2008, 13h56

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