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 12/07/2011, 11h05   #1
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
Par défaut Rien à l'exécution sur le serveur pour un proc sql

Bonjour,

Je construis mes scripts sas en local sur mon poste et les teste avant de les déposer sur le serveur. Mon poste est sous windows, le serveur sous unix. D'habitude cela ne pose aucune problème.

J'ai importé mes vues sas du serveur pour être synchro au niveau des données, en créant le même nom de librairie orastall
En local ceci marche très bien :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 proc sql noprint;
   SELECT  max(PER_H_EN) INTO : perio_param
   FROM orastall.tb_param_appli;
    quit;
 
	 %put perio_param = &perio_param. ;
 
 
	 proc sql noprint;
 SELECT  max(id_perio)  INTO : perio_tpa
  FROM orastall.tpa_cmpt_hebdo_dpt
 WHERE id_perio="&perio_param";
 quit;
  %put perio_tpa = &perio_tpa. ;
 
    DATA tmp.periode;
 perio_param = "&perio_param";
perio_tpa= "&perio_tpa";
  run;
Voici mes retours, correspondant à ce que j'attends :
Sur le serveur la log me renvoie :
Avec aucun "error:", pas de warning, juste du vide ! Alors que mes tables sources ont des données. Ce qui bloque complètement le reste du script...
J'ai pensé aux droits, j'ai donc mis ceci en haut du script " x "chmod -R 777 /donapp/ustall/d00/dat/sas/orastall";"

Quelqu'un aurait-il des pistes pour m'aider?

Merci.
StéphanieB. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h09   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
tu peux faire cela ?

Code :
1
2
3
4
proc sql ;
CREATE TABLE test AS   SELECT  max(PER_H_EN) INTO : perio_param
   FROM orastall.tb_param_appli;
    quit;
ou

Code :
1
2
3
4
proc sql noprint;
CREATE TABLE test AS      SELECT   DISTINCT PER_H_EN
   FROM orastall.tb_param_appli;
    quit;
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h22   #3
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
Voilà mon retour, côté serveur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
35       !     proc sql ;
36         CREATE TABLE test AS   SELECT  max(PER_H_EN) INTO : perio_param
37            FROM orastall.tb_param;
WARNING: INTO clause IS ignored IN the CREATE TABLE statement.
NOTE: TABLE WORK.TEST created, WITH 1 rows AND 1 COLUMNS.
 
38             quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.26 seconds
      cpu time            0.03 seconds
 
 
WARNING: Apparent symbolic reference PERIO_PARAM NOT resolved.
39         	    %put perio_param = &perio_param. ;
perio_param = &perio_param.

Je ne suis vraiment pas une très douée en sas : comment stocker dans perio_param pour la suite du script le contenu de cette table? ne vais-je pas me retrouver avec la même erreur que précédemment : ne pas pouvoir mettre dans une variable le résultat d'une requête d'une autre table ?
StéphanieB. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h26   #4
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Oops excuse moi je suis allé trop vite

Code :
1
2
3
4
5
proc sql ;
CREATE TABLE test AS
   SELECT  max(PER_H_EN)
   FROM orastall.tb_param_appli;
    quit;
As-tu une table avec du contenu ?


Idem avec cela

Code :
1
2
3
4
5
proc sql noprint;
CREATE TABLE test AS 
   SELECT   DISTINCT PER_H_EN
   FROM orastall.tb_param_appli;
    quit;
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h28   #5
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Hello,
quand on utilise le INTO: , il ne faut pas créer la table au même temps.

Code :
1
2
3
4
5
6
 
 
  proc sql ;
           SELECT  max(PER_H_EN) INTO : perio_param
           FROM orastall.tb_param;
quit;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h36   #6
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
Citation:
Envoyé par datametric Voir le message

Code :
1
2
3
4
5
proc sql ;
CREATE TABLE test AS
   SELECT  max(PER_H_EN)
   FROM orastall.tb_param_appli;
    quit;
As-tu une table avec du contenu ?
Non. J'obtiens une table vide.

Citation:
Envoyé par datametric Voir le message
Idem avec cela

Code :
1
2
3
4
5
proc sql noprint;
CREATE TABLE test AS 
   SELECT   DISTINCT PER_H_EN
   FROM orastall.tb_param_appli;
    quit;
Même résultat

Extrait de la log :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
35       !     proc sql ;
36         CREATE TABLE tmp.test AS   SELECT  max(PER_H_EN) INTO : perio_param
37            FROM orastall.tb_param;
WARNING: INTO clause IS ignored IN the CREATE TABLE statement.
WARNING: DATA SET TMP.TEST was NOT replaced because of NOREPLACE OPTION.
WARNING: DATA SET TMP.TEST was NOT replaced because of NOREPLACE OPTION.
 
38             quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.19 seconds
      cpu time            0.04 seconds
 
 
39         	    /*%put perio_param = &perio_param. ;*/
40         		
41         		
41       !   proc sql noprint;
42         CREATE TABLE tmp.test2 AS
43            SELECT   DISTINCT PER_H_EN
44            FROM orastall.tb_param;
NOTE: TABLE TMP.TEST2 created, WITH 0 rows AND 1 COLUMNS.
 
45             quit;
StéphanieB. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h37   #7
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
Citation:
Envoyé par s_a_m Voir le message
Hello,
quand on utilise le INTO: , il ne faut pas créer la table au même temps.

Code :
1
2
3
4
5
6
 
 
  proc sql ;
           SELECT  max(PER_H_EN) INTO : perio_param
           FROM orastall.tb_param;
quit;
Bonjour Sam,

il me semble que tu me cites exactement mon code?
De plus je ne suis pas sûre de bien comprendre ce que tu dis... J'ai vu dans des scripts le into comme je l'ai mis et ça marche très bien. Comment faire autrement?
StéphanieB. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h47   #8
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
pour utiliser le INTO: ( pour créer une macro variable), il faut omettre le CREATE. Ne me crois pas si tu veux, regarde juste ce que la log te dit :

Code :
1
2
3
4
5
6
7
8
9
  !     proc sql ;
36         CREATE TABLE tmp.test AS   SELECT  max(PER_H_EN) INTO : perio_param
37            FROM orastall.tb_param;
WARNING: INTO clause IS ignored IN the CREATE TABLE statement.
WARNING: DATA SET TMP.TEST was NOT replaced because of NOREPLACE OPTION.
WARNING: DATA SET TMP.TEST was NOT replaced because of NOREPLACE OPTION.
 
38             quit;
quand on utilise le CREATE la clause INTO sera ignoré.

maintenant pour ton problème initiale. est ce que la table existe bien et qu'elle contient des données?
quand tu dis sur le serveur , t'es en mode client server? ou tu rentre dans Unix et t'exécute SAS ?
as tu changé le chamin de la table? unix c'est des (/) et windows (\)...
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h48   #9
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
si les deux proc SQL ne renvoie pas de contenu c'est que ta table n'est pas accessible ou elle même est vide.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 14h32   #10
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
@Sam : désolé j'avais regardé trop vite...

La table initiale, tb_param dans la librairie orastall existe bien et contient une seule donnée, 201113. Puisque dans filezilla quand je la reprends en local je vois ma donnée.

Ma table initiale est une vue, je l'ai basculé en table sas : absolument aucun changement...
Pourtant en haut du script il y a cette ligne :
x "chmod -R 777 /donapp/ustall/d00/dat/sas/orastall"

qui donne tous les driots aux objets de la librairie orastall et quand j'interroge sous putty je vois bien que le dossier et ensuite tous les objets sont en accès/lecture/écriture pour tout le monde...

Franchement je n'y comprends rien...

J'ai bien checké si je n'avais pas mis de (\) c'est ok.

Peut-il manquer un composant installé sur le serveur?
Peut-on lire une table sas en console?
StéphanieB. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 14h48   #11
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Citation:
Envoyé par StéphanieB. Voir le message
Ma table initiale est une vue, je l'ai basculé en table sas : absolument aucun changement...
Une vue sur quoi ? Sur une autre table SAS ? Sur une table d'un autre logiciel ?
Il faudrait remonter à la source pour vérifier que les données sur lesquelles la vue est basée sont bien disponibles.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 14h54   #12
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
Ma table initiale est une vue sas, un fichier sas7bvew accompagné d'un fichier sas7bacs.
j'ai fait ceci pour la transformer en table sas :
Code :
1
2
3
DATA orastall.tb_param_appli;
SET orastall.tb_param;
run;
ce qui m'a crée un fichier sas7bdat.

Dans la vue, comme dans la table, j'ai bien mon champ avec ma donnée. Cette vue, table, ne contient d'ailleurs que ce champ.
Ce qui donne :
PER_H_EN
---------------
201113
StéphanieB. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 15h17   #13
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Sur le serveur Ce code ne renvoie rien alors que ton étape renvoie quelque chose ?

Code :
1
2
3
4
5
proc sql noprint;
CREATE TABLE test AS 
   SELECT   DISTINCT PER_H_EN
   FROM orastall.tb_param_appli;
    quit;
Test est créée dans WORK et non tmp.

Si tu exécutes une proc PRINT sur orastall.tb_param tu obtiens quelque chose ?
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 16h07   #14
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juillet 2009
Messages : 74
Points : 27
Points : 27
Comme souvent, le problème se situait entre la chaise et le clavier...

Dans l'ancien environnement où ça marchait j'avais décommenté /*%stpbegin;*/ et /*%stpend;*/ puisqu'ensuite j'utilisais mon script comme procédure stockée... Mais quand on test en batch il faut remettre les commentaires !

Merci de votre aide et de votre temps
StéphanieB. 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 06h28.


 
 
 
 
Partenaires

Hébergement Web