Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
Contributor
Beiträge: 39
Daten verknüpfen

Wieder einmal das Data Integration Studio.

 

Ich habe eine Tabelle mit Bestellnummer und Kundennummer. Nun soll ich alles Bestellungen eines Kunden unter einem Schlüssel zusammenfassen, der aus den Bestellnummern besteht. Also z.B.:

 

bestellnummer 555 Kunde 111

bestellnummer 556 Kunde 111

 

herauskommen sollen dann diese beiden Datensätze jeweils mit dem Schlüssel 555_556, bei 3 Bestellungen entsprechend erweitert.

 

Ist das irgendwie machbar?

 

Vielen Dank im voraus

Occasional Contributor
Beiträge: 8
Betreff: Daten verknüpfen

Hallo Fay123,

 

hier könnte eine RETAIN-Variable die Lösung sein!

 

data DATEN;
    input KUNDE BESTELLUNG;
    cards;
    111 555
    111 556
run;

proc sort data=DATEN;
    by KUNDE BESTELLUNG;
run;

data DATEN_VERDICHTET (drop=BESTELLUNG);
    set DATEN;
    by KUNDE;
    attrib BESTELLUNGEN length=$200.;
    retain BESTELLUNGEN;
    if first.KUNDE then
        BESTELLUNGEN = strip(put(BESTELLUNG,8.));
    else
        BESTELLUNGEN = strip(BESTELLUNGEN) !! "_" !! strip(put(BESTELLUNG,8.));

    if last.KUNDE then 
        output;
run;

Die Ergebnistabelle hat nun eine Zeile:

 

KUNDE BESTELLUNGEN
111 555_556

Contributor
Beiträge: 24
Betreff: Daten verknüpfen

Hallo Fay123,

man kann es auch mit proc transpose machen:

data DATEN;
    input KUNDE BESTELLUNG;
    cards;
    111 555
    111 556
run;

proc sort data=DATEN;
    by KUNDE BESTELLUNG;
run;
Proc transpose data = Daten out=Daten_verdichtet prefix=Bestellung_;
  by kunde;
  var bestellung;
run;
Data Daten_verdichtet;
  Length Bestellungen $32;
  set Daten_verdichtet;
  Bestellungen = catx("_",of Bestellung_:);
  drop _: Bestellung_:;
run;

Viele Grüße

Jan

Contributor
Beiträge: 39
Betreff: Daten verknüpfen

Ich bin verzweifelt ...

 

Ich arbeite im Data Integration Studio mit den Transformationen. Habe auch einen Job geschrieben der mir die Daten rausliest und sortiert. Zum Schluss bleibt mir eine Tabelle mit den Spalten Kunde und Bestellung.

Wollte jetzt mit der Transpose Transformation für jeden Kunden die Bestellungen in einer separaten Spalte anzeigen lassen, bin aber zu blöd dafür.

Kann mir jemand weiterhelfen, wo ich was eintragen muss?

Transpose2.png

 

Und wie immer vielen Dank im voraus!

Esteemed Advisor
Beiträge: 6.669
Betreff: Daten verknüpfen

Der Code sieht im Prinzip so aus:

data bestellungen;
input kunde $ bestellung;
cards;
a 20
b 15
c 10
d 30
;
run;

proc transpose data=bestellungen out=ergebnis;
var bestellung;
id kunde;
run;

"Bestellung" muss also ins erste Feld, und "Kunde" ins ID-Feld. Sollte das noch nicht aktiv sein, muss wahrscheinlich an den Optionen geschraubt werden. (Ich arbeite nicht mit DI Studio, ich schreibe meine Codes alle selbst)

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Contributor
Beiträge: 24
Betreff: Daten verknüpfen

Hallo Fay123,

Die Antwort steht bereits in meinem letzten Post.

"wählen sie sie zu transponierende Spalten aus (VAR-Anweisung)" = Bestellung.

"wählen sie Spalten aus, deren Werte Gruppen definieren (BY-Anweisung)" = Kunde

VG Jan

Contributor
Beiträge: 39
Betreff: Daten verknüpfen

Vielen herzlichen Dank an alle für die Hilfe!