Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
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 23/06/2011, 16h33   #1
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Par défaut Condition de MERGE

J essaye de merger 2 tables mais j ai une erreur qui apparait disant que le trie n est pas fait et pour tant il est fait(enfin je crois)
donc cest quoi les condition d une bonne merge?

Code :
1
2
3
4
5
6
7
8
423  DATA Merde ;
424  Merge Vac3 Contremed3;
425  BY Sub_id;
426  run;
 
ERROR: BY VARIABLES are NOT properly sorted ON DATA SET WORK.CONTREMED3.
SUB_ID=200-00442 VISIT_ID=  var=  CMED_DEX=18729 CMED_DSX=18729 FIRST.SUB_ID=0 LAST.SUB_ID=0
_ERROR_=1 _N_=5
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h39   #2
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 212
Points : 319
Points : 319
Bonjour,

bon a priori l'une de tes tables n'est pas classée, es tu vraiment sûr d'avoir bien trié les DEUX fichiers de ton merge selon la variable Sub_id ?
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h42   #3
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
je vais dire oui et je vais meme ajouter une photo d ici 5 min
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h44   #4
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
non ton trie n'a pas été fait. telle est la réponse.
Puis data miel et non pas data merde.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h46   #5
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
voila l image des table
Images attachées
Type de fichier : jpg md.JPG (120,4 Ko, 9 affichages)
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h49   #6
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Citation:
Envoyé par s_a_m Voir le message
non ton trie n'a pas été fait. telle est la réponse.
Puis data miel et non pas data merde.
qu est ce que SAS entend par trie car pour moi il est fait cf jpg
énervement passager dsl
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h52   #7
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
tu peux refaire ta capture d'écran en rajoutant cette fois ci au début de ton code, et mettre les deux étape proc sort des deux tables à fusionner horizontalement (merge)?
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h59   #8
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
voila
Code :
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
PTION nolabel;
 
 
DATA vac;
SET DB.Vaccine (keep=VAC_DX SUB_ID VISIT_ID );
Run;
 
Proc sort DATA=vac NODUPRECS;
BY  VAC_DX SUB_ID VISIT_ID ;
run;
 
DATA vac1 (DROP=_temp);
	SET vac (RENAME=(VAC_DX=_temp));
	var=input(_temp,nldate.);
run;
 
proc Sort DATA=vac1 out=vac2 noduprec;
	BY descending sub_id  descending  var;
run;
 
DATA vac3 (DROP=_temp);
	SET vac2 (RENAME=(var=_temp));
	var=put(_temp,nldate.);
run;;
 
DATA ContreMed;
SET DB.cmed (Keep= SUB_ID CMPYC_YN CMED_DEX CMED_DSX F_CM_TMF WHERE = (INDEX(CMPYC_YN,"N")));
DROP  F_CM_TMF CMPYC_YN;
 
run;
 
Proc sort DATA=contremed out=contremed1;
BY descending sub_id;
run;
 
DATA ContreMed2;
SET Contremed1(RENAME=(CMED_DEX=_temp) );
CMED_DEX=input(_temp,nldate.) ;
DROP _temp;
run;
DATA ContreMed3;
SET Contremed2(RENAME=(CMED_DSX=_temp) );
CMED_DSX=input(_temp,nldate.) ;
DROP _temp;
run;
 
DATA Merde ;
Merge Vac2 Contremed3;
BY Sub_id;
run;
Images attachées
Type de fichier : jpg md.JPG (118,5 Ko, 1 affichages)
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h00   #9
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
essaies ceci :

Code :
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
 
OPTION nolabel;
 
 
DATA vac;
SET DB.Vaccine (keep=VAC_DX SUB_ID VISIT_ID );
Run;
 
Proc sort DATA=vac NODUPRECS;
BY  VAC_DX SUB_ID VISIT_ID ;
run;
 
DATA vac1 (DROP=_temp);
	SET vac (RENAME=(VAC_DX=_temp));
	var=input(_temp,nldate.);
run;
 
proc Sort DATA=vac1 out=vac2 noduprec;
	BY descending sub_id  descending  var;
run;
 
DATA vac3 (DROP=_temp);
	SET vac2 (RENAME=(var=_temp));
	var=put(_temp,nldate.);
run;;
 
DATA ContreMed;
SET DB.cmed (Keep= SUB_ID CMPYC_YN CMED_DEX CMED_DSX F_CM_TMF WHERE = (INDEX(CMPYC_YN,"N")));
DROP  F_CM_TMF CMPYC_YN;
 
run;
 
Proc sort DATA=contremed out=contremed1;
BY descending sub_id;
run;
 
DATA ContreMed2;
SET Contremed1(RENAME=(CMED_DEX=_temp) );
CMED_DEX=input(_temp,nldate.) ;
DROP _temp;
run;
DATA ContreMed3;
SET Contremed2(RENAME=(CMED_DSX=_temp) );
CMED_DSX=input(_temp,nldate.) ;
DROP _temp;
run;
 
proc Sort DATA=vac2 out=vac2 noduprec;
	BY   descending ;
run;
 
 
DATA Merde ;
Merge Vac2 Contremed3;
BY Sub_id;
run;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h01   #10
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
Les explications. in faut que les deux tables à fusioner ( merge) soient trier de la même façon ( ici avec une seule variable)
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h02   #11
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
La preuve, sur ta copie d'écran, tes deux tables ne sont pas triées
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h04   #12
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
meme erreur
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h10   #13
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Citation:
Envoyé par s_a_m Voir le message
essaies ceci :

Code :
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
 
OPTION nolabel;
 
 
DATA vac;
SET DB.Vaccine (keep=VAC_DX SUB_ID VISIT_ID );
Run;
 
Proc sort DATA=vac NODUPRECS;
BY  VAC_DX SUB_ID VISIT_ID ;
run;
 
DATA vac1 (DROP=_temp);
	SET vac (RENAME=(VAC_DX=_temp));
	var=input(_temp,nldate.);
run;
 
proc Sort DATA=vac1 out=vac2 noduprec;
	BY descending sub_id  descending  var;
run;
 
DATA vac3 (DROP=_temp);
	SET vac2 (RENAME=(var=_temp));
	var=put(_temp,nldate.);
run;;
 
DATA ContreMed;
SET DB.cmed (Keep= SUB_ID CMPYC_YN CMED_DEX CMED_DSX F_CM_TMF WHERE = (INDEX(CMPYC_YN,"N")));
DROP  F_CM_TMF CMPYC_YN;
 
run;
 
Proc sort DATA=contremed out=contremed1;
BY descending sub_id;
run;
 
DATA ContreMed2;
SET Contremed1(RENAME=(CMED_DEX=_temp) );
CMED_DEX=input(_temp,nldate.) ;
DROP _temp;
run;
DATA ContreMed3;
SET Contremed2(RENAME=(CMED_DSX=_temp) );
CMED_DSX=input(_temp,nldate.) ;
DROP _temp;
run;
 
proc Sort DATA=vac2 out=vac2 noduprec;
	BY   descending ;
run;
 
 
DATA Merde ;
Merge Vac2 Contremed3;
BY Sub_id;
run;
j ai essayé et ca marche pas
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h10   #14
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Citation:
Envoyé par MEGAMIND2 Voir le message
La preuve, sur ta copie d'écran, tes deux tables ne sont pas triées
et pourtant je trie les 2 table par une proc sorte data descending Sub_id
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h31   #15
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
dsl c moi qui me suis planté . tu voies la proc sort juste avant le merge
enlèves
by ascending et remplace by sub_id
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 10h10   #16
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
j aitoujours la meme erreur

Code :
1
2
3
4
5
6
7
8
9
10
11
proc Sort DATA=vac2 out=vac2;
	BY   descending sub_id ;
run;  
proc Sort DATA=ContreMed3 out=ContreMed3;
	BY   descending sub_id ;
run;  
 
DATA Miel ;
Merge Vac2 Contremed3;
BY Sub_id;
run;
et voila la log

Code :
1
2
3
4
5
6
7
8
9
10
11
12
  ERREUR: Les VARIABLES BY ne sont pas triées correctement dans TABLE WORK.CONTREMED3.
SUB_ID=200-00442 VISIT_ID=  var=. CMED_DEX=18729 CMED_DSX=18729 FIRST.SUB_ID=0 LAST.SUB_ID=0
_ERROR_=1 _N_=5
Note: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs.
Note:  1 observations copiées de la table WORK.VAC2.
Note:  6 observations copiées de la table WORK.CONTREMED3.
ATTENTION: Table WORK.MIEL peut-être incomplète. Lorsque cette étape s'est interrompue, il y avait
           4 obs. et 5 VARIABLES.
ATTENTION: TABLE WORK.MIEL non remplacée car cette étape a été interrompue.
Note: L'étape DATA used (Total process time):
      temps réel                   0.02 secondes
      temps processeur             0.01 secondes
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 10h28   #17
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
Quand SAS parle de trier les tables pour un MERGE, il entend "en ordre croissant". Ce sont les deux DESCENDING dans tes procédures SORT qui plombent le programme. Si tu les enlèves, ça doit marcher.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 10h36   #18
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
si je ne fais pas de descending je trie avec quoi?
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 10h44   #19
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
sans proc sort c est pareil

Code :
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
 
585  *proc Sort DATA=vac2 out=vac2;
586  *   BY   descending sub_id ;
587  *run;
588  *proc Sort DATA=ContreMed3 out=ContreMed3;
589  *   BY   descending sub_id ;
590  *run;
591
592  DATA Miel ;
593  Merge Vac2 Contremed3;
594  BY Sub_id;
595  run;
 
ERREUR: Les VARIABLES BY ne sont pas triées correctement dans TABLE WORK.VAC2.
SUB_ID=200-00135 VISIT_ID=V01 var=. CMED_DEX=. CMED_DSX=. FIRST.SUB_ID=1 LAST.SUB_ID=1 _ERROR_=1
_N_=1
Note: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs.
Note:  2 observations copiées de la table WORK.VAC2.
Note:  1 observations copiées de la table WORK.CONTREMED3.
ATTENTION: Table WORK.MIEL peut-être incomplète. Lorsque cette étape s'est interrompue, il y avait
           0 obs. et 5 VARIABLES.
ATTENTION: TABLE WORK.MIEL non remplacée car cette étape a été interrompue.
Note: L'étape DATA used (Total process time):
      temps réel                   0.02 secondes
      temps processeur             0.01 secondes
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 17h39   #20
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
T'as raison, il te faut des cours.
essaies ceci.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
proc Sort DATA=vac2 out=vac2;
	BY   sub_id ;
run;  
proc Sort DATA=ContreMed3 out=ContreMed3;
	BY   sub_id ;
run;  
 
DATA Miel ;
Merge Vac2 Contremed3;
BY Sub_id;
run;
s_a_m 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 01h36.


 
 
 
 
Partenaires

Hébergement Web