LesezeichenAbonnierenRSS-Feed abonnieren
Fay123
Obsidian | Level 7

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!

 

5 ANTWORTEN 5
JohannesLang
Fluorite | Level 6

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

 

Fay123
Obsidian | Level 7

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.

CKothenschulte
Obsidian | Level 7

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!

AHallauer
Fluorite | Level 6

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.  🙂

Fay123
Obsidian | Level 7

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

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 5 Antworten
  • 3600 Aufrufe
  • 2 Kudos
  • 4 in Unterhaltung