1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    925
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : janvier 2011
    Messages : 925
    Points : 518
    Points
    518

    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
    25
    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 : 25
    Points : 32
    Points
    32

    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
    Membre confirmé
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    925
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : janvier 2011
    Messages : 925
    Points : 518
    Points
    518

    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
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : juillet 2011
    Messages : 352
    Points : 920
    Points
    920
    Billets dans le blog
    9

    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
    Membre confirmé
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    925
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : janvier 2011
    Messages : 925
    Points : 518
    Points
    518

    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. 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