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

Outils BI Discussion :

Code SAS Guide pour ajouter une date à une table


Sujet :

Outils BI

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut Code SAS Guide pour ajouter une date à une table
    Bonjour,
    A une table en sortie de ma requête, je souhaite ajouter par un code la date qui est disponible dans la dite table et qui est au format numérique sur 6 caractères (201406 par exemple).
    Je peux également utiliser un champ au format date.

    J'ai tenté :
    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
    WARNING: Apparent symbolic reference DATE_ANALYSE not resolved.
    15         /* On créé une table mensuelle */
    16         Data WORK.append_table_0000_&DATE_ANALYSE. ;
                                                            _
                                                            22
                                                            200
    ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, /, ;, _DATA_, _LAST_, _NULL_.  
     
    ERROR 200-322: The symbol is not recognized and will be ignored.
     
    17         	length DATEANALYSE 6. ;
    18         	set WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS ;
    19         	DATEANALYSE = &DATE_ANALYSE. ;
                                        _
                                        386
                                        200
    WARNING: Apparent symbolic reference DATE_ANALYSE not resolved.
    ERROR 386-185: Expecting an arithmetic expression.
     
    ERROR 200-322: The symbol is not recognized and will be ignored.
     
    20         run;
     
    NOTE: The SAS System stopped processing this step because of errors.
    WARNING: The data set WORK.APPEND_TABLE_0000_ may be incomplete.  When this step was stopped there were 0 observations and 13 
             variables.
    WARNING: Data set WORK.APPEND_TABLE_0000_ was not replaced because this step was stopped.
    NOTE: DATA statement used (Total process time):
          real time           0.03 seconds
          cpu time            0.00 seconds
    Par avance merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 331
    Points
    331
    Par défaut
    Bonjour,

    Je ne comprends pas trop ce que tu souhaites faire :

    La variable DATEANALYSE existe-t-elle dans la table WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS ?

    Si oui et si elle prend toujours la même valeur dans la table, tu dois la passer en macro variable à partir de cette table pour la réutiliser ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_;
       set WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS (obs=1) ;
       call symputx("DATE_ANALYSE", DATEANALYSE);
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc datasets lib = WORK memtype = data nolist ;
       change STOCK_CT_LOG_RCT_PAR_CONTRATS = append_table_0000_&DATE_ANALYSE. ;
    quit;
    Timarsu.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut Merci mais,
    Merci d'avoir répondu si vite,
    J'ai lancé ton deuxième code mais j'ai toujours une erreur.
    J'ai l'impression que c'est le "&" qui est refusé.

    Pour préciser ce que je souhaite, c'est ajouter à ma table finale la date d'analyse qui correspond aux données de juin que je traite en juillet.
    Ce qui me permettra ensuite de faire un export excel avec la date en question.

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut Merci mais bis
    J'ai lancé les deux codes et le message d'euueur est différent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DATA _null_;
       SET WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS (obs=1) ;
       call symputx("DATE_ANALYSE", DATEANALYSE);
    run; 
     
     
    proc datasets lib = WORK memtype = DATA nolist ;
       CHANGE STOCK_CT_LOG_RCT_PAR_CONTRATS = append_table_0000_&DATE_ANALYSE. ;
    quit;

    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
    67
    68
    69
    70
     
     
     
    1                                                          The SAS System                             16:02 Wednesday, July 16, 2014
     
    1          ;*';*";*/;quit;run;
    2          OPTIONS PAGENO=MIN;
    3          %LET _CLIENTTASKLABEL='mois_analyse';
    4          %LET _CLIENTPROJECTPATH='C:\1-RPH\SAS\1-MIGRATION SAS\SAS-2014-4-4-STOCK CRELOG RCT PAR CONTRATS.egp';
    5          %LET _CLIENTPROJECTNAME='SAS-2014-4-4-STOCK CRELOG RCT PAR CONTRATS.egp';
    6          %LET _SASPROGRAMFILE=;
    7          
    8          ODS _ALL_ CLOSE;
    9          OPTIONS DEV=ACTIVEX;
    10         GOPTIONS XPIXELS=0 YPIXELS=0;
    11         FILENAME EGSR TEMP;
    12         ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR STYLE=HtmlBlue
    12       ! STYLESHEET=(URL="file:///C:/Program%20Files/SASHome/x86/SASEnterpriseGuide/5.1/Styles/HtmlBlue.css") NOGTITLE NOGFOOTNOTE
    12       !  GPATH=&sasworklocation ENCODING=UTF8 options(rolap="on");
    NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
    13         
    14         GOPTIONS ACCESSIBLE;
     
     
    15         DATA _null_;
    16            SET WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS (obs=1) ;
    17            call symputx("DATE_ANALYSE", DATEANALYSE);
    18         run;
     
    NOTE: There were 1 observations read from the data set WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS.
    NOTE: DATA statement used (Total process time):
          real time           0.03 seconds
          cpu time            0.00 seconds
     
     
    19         
    20         
    21         proc datasets lib = WORK memtype = DATA nolist ;
    22            CHANGE STOCK_CT_LOG_RCT_PAR_CONTRATS = append_table_0000_&DATE_ANALYSE. ;
    NOTE: Line generated by the macro variable "DATE_ANALYSE".
    22          append_table_0000_.
                ___________________
                22
                201
    ERROR 22-322: Expecting a name.  
    ERROR 201-322: The option is not recognized and will be ignored.
    23         quit;
    NOTE: Enter RUN; to continue or QUIT; to end the procedure.
     
    NOTE: Statements not processed because of errors noted above.
    NOTE: The SAS System stopped processing this step because of errors.
    NOTE: PROCEDURE DATASETS used (Total process time):
          real time           0.00 seconds
          cpu time            0.00 seconds
     
    24         
    25         GOPTIONS NOACCESSIBLE;
    26         %LET _CLIENTTASKLABEL=;
    27         %LET _CLIENTPROJECTPATH=;
    28         %LET _CLIENTPROJECTNAME=;
    29         %LET _SASPROGRAMFILE=;
    30         
    31         ;*';*";*/;quit;run;
    2                                                          The SAS System                             16:02 Wednesday, July 16, 2014
     
    32         ODS _ALL_ CLOSE;
    33         
    34         
    35         QUIT; RUN;
    36

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 331
    Points
    331
    Par défaut
    Je pense tout simplement que ta variable DATEANALYSE n'est pas valorisée dans ta table WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS, ( à minima sur la première ligne ).

    Le pré-réquis pour que cela marche étant que cette variable existe et soit renseignée.

    Timarsu.

  6. #6
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par timarsu Voir le message
    Je pense tout simplement que ta variable DATEANALYSE n'est pas valorisée dans ta table WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS, ( à minima sur la première ligne ).

    Le pré-réquis pour que cela marche étant que cette variable existe et soit renseignée.

    Timarsu.

    Non non, ma première colonne est DATE_ANALYSE formatée du jour de l'analyse (ex : 17/07/2014) et aucune ligne n'est vide

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 331
    Points
    331
    Par défaut
    Si la variable s'appelle DATE_ANALYSE, il faut utiliser le code suivant pour créer la macro variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DATA _null_;
       SET WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS (obs=1) ;
       call symputx("DATE_ANALYSE", DATE_ANALYSE);
    run; 
     
    %put Date Analyse = &DATE_ANALYSE. ;
    Par contre, tu dis que ta variable est formatée du jour de l'analyse ( 17/07/2014 par exemple ) alors que dans ta première demande, tu disais que ta variable avait un format numérique ( 201406 par exemple ). Ce sont deux format bien différents pouvant amener un suffixe de table inattendu.

  8. #8
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut Gagné
    J'ai changé le format de ma date en numérique (201406) et c'est parfait
    Mille mercis pour ton aide



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATA _null_;
       SET WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS (obs=1) ;
       call symputx("PERIODE", PERIODE);
    run; 
     
     
    proc datasets lib = WORK memtype = DATA nolist ;
       CHANGE STOCK_CT_LOG_RCT_PAR_CONTRATS = append_table_0000_&PERIODE. ;
    quit;

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 60
    Points : 49
    Points
    49
    Par défaut Et pour un format date (17/06/2014) ? (
    Citation Envoyé par timarsu Voir le message
    Si la variable s'appelle DATE_ANALYSE, il faut utiliser le code suivant pour créer la macro variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DATA _null_;
       SET WORK.STOCK_CT_LOG_RCT_PAR_CONTRATS (obs=1) ;
       call symputx("DATE_ANALYSE", DATE_ANALYSE);
    run; 
     
    %put Date Analyse = &DATE_ANALYSE. ;
    Par contre, tu dis que ta variable est formatée du jour de l'analyse ( 17/07/2014 par exemple ) alors que dans ta première demande, tu disais que ta variable avait un format numérique ( 201406 par exemple ). Ce sont deux format bien différents pouvant amener un suffixe de table inattendu.



    Et pour un format date
    input(put(datepart(TINFO_DSS.DATDELHIS),ddmmyyw10.) ,10.) (19/11/2011) + formater en DDMMYYw.d sur 10 caractères,

    Tu aurais une solution ? ça peut me servir dans un autre projet

    D'avance et encore merci

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

Discussions similaires

  1. SAS GUIDE Extraire l'année d'une date
    Par faraudch dans le forum Outils BI
    Réponses: 5
    Dernier message: 23/09/2011, 15h34
  2. Requête pour ajouter 5 ans à une date.
    Par GDS_38300 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/07/2011, 14h57
  3. [XL-2003] besoin d'aide pour ajouter 3ans a une date en macro
    Par fpouzou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2009, 11h45
  4. [Macro] Ajouter un jour à une date sas
    Par Tyler Durden dans le forum Macro
    Réponses: 2
    Dernier message: 15/01/2009, 12h57
  5. ajouter 1 mois à une date dans une requete
    Par alain.lc dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 04/04/2005, 12h05

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