Desktop productivity for business analysts and programmers

[ Bonjour ] - Fusion de tables

Reply
Occasional Contributor
Posts: 6

[ Bonjour ] - Fusion de tables

Bonjour,

Nous venons de passer de SAS en batch à SAS EG 4 tout récemment. Aucune formation plus poussée que la 1/2 journée que nous avons eu n'est pour l'instant prévue, donc nous devons faire avec l'aide en ligne, et ce lieu de providence qu'est ce forum.

Existe t il un moyen d’identifier les enregistrements de chaque table après une fusion ?

Exemple - Data TOTU ; merge TOTO(in=a) TUTU(in=b) ; by clé_toto_tutu ;

Ceci dans le but de conditionner les traitements en fonction de leurs tables d'origine.

Par avance, merci.
SAS Super FREQ
Posts: 8,717

Re: [ Bonjour ] - Fusion de tables

Bonjour,
Vous pouvez examiner comment une MERGE (FUSION) fonctionne à côté de courir ce code. Examiner alors soigneusement le rendement dans les 4 dossiers différents créés par la MERGE (FUSION). Vous devez décider quelle logique donne le dossier qui est identique au dossier que vous voulez.
[pre]
data toto;
input cleName$ grp $ other $;
return;
datalines;
dorothy aaa blue
tinman aaa silver
scarecrow bbb yellow
lion ccc yellow
wizard ccc green
glinda ddd pink
;
run;

data tutu;
input cleName $ place $;
return;
datalines;
dorothy kansas
tinman forest
scarecrow field
glinda bubble
wizard oz
witch house
;
run;

proc sort data=toto;
by cleName;
run;

proc sort data=tutu;
by cleName;
run;

data BOTH TOTO_ONLY TUTU_ONLY ALL;
merge toto(in=a)
tutu(in=b);
by cleName;
totoflag = a;
tutuflag = b;

if a=1 and b=1 then do;
song = 'Over the Rainbow ';
output BOTH;
end;

if a=0 and b=1 then do;
song = 'Ding Dong ';
output TUTU_ONLY;
end;

if a=1 and b=0 then do;
song = 'King of the Forest ';
output TOTO_ONLY;
end;

output ALL;
run;

proc print data=BOTH;
title 'IN TOTO and IN TUTU files';
run;

proc print data=TOTO_ONLY;
title 'IN TOTO file only';
run;

proc print data=TUTU_ONLY;
title 'IN TUTU file only';
run;

proc print data=ALL;
title 'ALL OBS WITH FLAGS';
run;

[/pre]

Pour plus d'aide, particulièrement avec SAS Enterprise Guide, vous devriez entrer en contact avec SAS Technical Support.

Le support téléphonique est accessible au 01 60 62 12 12
du lundi au vendredi de 9h00 à 17h30 (17h00 le vendredi).

Pour tout envoi de questions et problèmes: support@sas.com

Pour plus d'aide, particulièrement avec SAS Enterprise Guide, vous devez entrer en contact avec SAS Technical Support:
http://support.sas.com/techsup/contact/index.html
http://www.sas.com/offices/europe/france/services/support/index.html

cynthia
Occasional Contributor
Posts: 6

Re: [ Bonjour ] - Fusion de tables

Merci pour votre intervention,

pratiquant SAS depuis quelques années déjà ( en batch sur un système MVS ), le code que vous me transmettez ne m'est pas totalement inconnu Smiley Happy. En revanche, et peut être que je n'ai pas été assez claire dans mon premier message, ma question concernait le système de jointure proposé dans SAS EG4 et n'ont pas sur l'écriture d'une fusion en code SAS pure.

Existe t il l'équivalent du code que vous avez écrit, dans le principe, dans le module de jointure ( CF : boite de dialogue - Générateur de filtre et requête - jointure ) ?

Nb : ne pratiquant que très très peu ( voir pas du tout ) le SQL, est il possible de récupérer le code SQL de la jointure et de tester la présence, ou la non présence, des enregistrements dans les tables, de manière - comme vous l'avez illustré - à conditionner certains traitements ?

Par avance, merci.
SAS Super FREQ
Posts: 8,717

Re: [ Bonjour ] - Fusion de tables

En effet, je n'ai pas attrapé cette signification de votre question. PROC SQL te permet d'exécuter seulement un type de se joint à la fois. Dans une MERGE et DATA STEP, vous pouvez créer 4 tables d'une étape. Avec le SQL, vous auriez besoin de 4 différents se joint pour créer les 4 tables.

Avec un DATA STEP, vous pouvez employer une instruction d'affectation simple pour créer le "totoflag" ou le "tutuflag". en utilisant la logique d'IN=. Avec un SQL, la logique d'IN= n'est pas disponible. Ainsi, vous devez employer d'autres techniques pour créer votre "totoflag" ou votre "tutuflag" ou pour effectuer l'autre traitement conditionnel.

Pour construire de nouvelles colonnes, vous aviez l'habitude le rédacteur d'expression quand vous établissez votre EG QUERY. Même si vous employez le SAS Enterprise Guide pour créer une QUERY simple pour le JOIN, vous pouvez devoir éditer le SQL pour insérer un rapport de CASE CLAUSE pour créer vos nouvelles variables ou pour effectuer votre traitement conditionnel. Vous devriez ÉDITER le code de SAS EG dans une fenêtre de CODE NODE.

Afin de reproduire la logique de MERGE en utilisant SAS Enterprise Guide 4, SAS Technical Support peut vous aider à figurer dehors la meilleure manière d'accomplir le votre chargent.

cynthia
Ask a Question
Discussion stats
  • 3 replies
  • 246 views
  • 0 likes
  • 2 in conversation