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: 42
Datensätze zusammenführen

Hallo!

 

Mal wieder ein Problem mit dem Data Integration Studio.

 

Ich habe eine Tabelle mit Kunden. Einige sind mehrmals vertreten, andere nur einmal. Ich möchte jetzt jeweils nur einen Datensatz für einen Kunden haben. Gibt es da eine Möglichkeit?

 

Datensätze.png

 

Danke für die Hilfe!

 

Occasional Contributor
Beiträge: 8
Betreff: Datensätze zusammenführen

Hallo,

 

die Frage ist zunächst, welche Informationen zu Deinen doppelten Kunden Du behalten möchtest.

Anscheinend sind die Ausprägungen im Feld "Risikomerkmal" unterschiedlich.

Wenn die Regel formuliert ist (z.B. immer den größten Wert pro Kunde behalten), dann kann man sich über die Umsetzung Gedanken machen.

 

Gruß

Johannes

 

Contributor
Beiträge: 42
Betreff: Datensätze zusammenführen

Das war wohl etwas undeutlich formuliert Smiley (gleichgültig)

 

Zum Schluss soll für jede Kundennummer ein Datensatz mit allen Risikomerkmalen herauskommen, diese dann in verschiedenen Spalten.

Occasional Contributor
Beiträge: 9
Betreff: Datensätze zusammenführen

Hallo Fay123,

 

ich habe mir folgende Testdaten erzeugt:

data Kunden;
  input KUNDE RISIKO;

  Anzahl=1; /* Nur für Variante 2 benötigt */
  cards;
  1 1
  1 2
  1 3
  2 1
  3 2
  3 3
  ;;;;
run;

Ich würde die Anfoderung mit PROC TRANSPOSE bzw. der Anwendungsroutine Transponieren umsetzen.

 

Variante 1 erzeugt eine Tabelle mit N Spalten, in der je Kunde die jeweiligen Risikomerkmale nacheinander enthalten sind.

PROC TRANSPOSE DATA=WORK.KUNDEN
  OUT=WORK.VARIANTE1 (drop=Quelle)
  PREFIX=Risiko
  NAME=Quelle
  LABEL=Etikett
;
  BY KUNDE;
  VAR RISIKO;
RUN;

Variante 2 erzeugt eine Spalte je vorkommendem Risikomerkmal, also zum Beispiel Risiko_3 für Risikomerkmal 3. Sie ist dann (in meinem Beispiel) bei allen Kunden mit 1 belegt, bei denen das Risikomerkmal vorkommt.

 

PROC TRANSPOSE DATA=WORK.KUNDEN
  OUT=WORK.VARIANTE2 (drop=Quelle)
  PREFIX=Risiko_
  NAME=Quelle
  LABEL=Etikett
;
  BY KUNDE;
  ID RISIKO;
  VAR Anzahl;
RUN;

 

Viel Erfolg!

Occasional Contributor
Beiträge: 5
Betreff: Datensätze zusammenführen

Im Anhang eine schnell gebastelte Lösung über einen dynamischen Array.

 

Prinzip:

  1. Zunächst über SQL bestimmen wieviele Risikomerkmale maximal existieren.
  2. Im Datastep Array mit entsprechender Größe aufbauen, in dem die Risikomerkmale "gesammelt" werden.
  3. Und dann am Ende des Gruppenkriteriums alles ausgeben.
    Alle anderen Eigenschaften, werden dann immer aus dem letzten Satz des Gruppenkriteriums gezogen!

Mit den Testdaten hat es so zumindest funktioniert.  :-)

Anhang
Contributor
Beiträge: 42
Betreff: Datensätze zusammenführen

Vielen Dank an alle für die Hilfe Frau (fröhlich)