Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo zusammen,
ich habe da mal eine Frage, bezüglich eines Problems, dass ich derzeit in Qlik Sense habe.
Ich habe ein Load Skript erstellt, der mir alles ausgibt. Jetzt benötige ich noch einen Counter, der mir die ganzen Daten die anhand einer bestimmten Spalte "Kunde" hochzählt und mit einer führenden Null hinten dran setzt.
Zum Beispiel:
Kunde Daten1 Daten2 Daten3 usw. gewünschtes Ergebnis
K1 asdf asdf asdf K101
K1 asdf asdf asdf K102
K2 asdf asdf asdf K201
K2 asdf asdf asdf K202
K2 asdf asdf asdf K203
K2 asdf asdf asdf K204
K3 asdf asdf asdf K301
K4 asdf asdf asdf K401
K4 asdf asdf asdf K402
Ist das im Load Skript möglich? Über jegliche Denkanstöße wäre ich sehr dankbar.
Autonumber(RowNo(),Kunde) -> Hat mir leider nicht weitergeholfen.
Vielen Dank im Voraus.
Gruß
David
Table1:
Load * inline [
Kunde, Daten1, Daten2 , Daten, Daten3
K1, asdf, asdf, asdf, K101
K1, asdf, asdf, asdf, K102
K2, asdf, asdf, asdf, K201
K2, asdf, asdf, asdf, K202
K2, asdf, asdf, asdf, K203
K2, asdf, asdf, asdf, K204
K3, asdf, asdf, asdf, K301
K4, asdf, asdf, asdf, K401
K4, asdf, asdf, asdf, K402
];
NoConcatenate
LOAD *,
if(Peek(Kunde) = Kunde, num(Peek(NUM) + 1, '00'), '01') as NUM,
Kunde & if(Peek(Kunde) = Kunde, num(Peek(NUM) + 1, '00'), '01') as ORDER
Resident Table1;
DROP Table Table1;
EXIT Script;
Result:
Table1:
Load * inline [
Kunde, Daten1, Daten2 , Daten, Daten3
K1, asdf, asdf, asdf, K101
K1, asdf, asdf, asdf, K102
K2, asdf, asdf, asdf, K201
K2, asdf, asdf, asdf, K202
K2, asdf, asdf, asdf, K203
K2, asdf, asdf, asdf, K204
K3, asdf, asdf, asdf, K301
K4, asdf, asdf, asdf, K401
K4, asdf, asdf, asdf, K402
];
NoConcatenate
LOAD *,
if(Peek(Kunde) = Kunde, num(Peek(NUM) + 1, '00'), '01') as NUM,
Kunde & if(Peek(Kunde) = Kunde, num(Peek(NUM) + 1, '00'), '01') as ORDER
Resident Table1;
DROP Table Table1;
EXIT Script;
Result:
Das könnte man vielleicht so angehen:
load *, Kunde & '0' & Kundenzähler as KundenKey;
load Kunde, if(Kunde = previous(Kunde), rangesum(peek('Kundenzähler'), 1), 1) as Kundenzähler
resident Quelle order by Kunde;
Vielen Dank für die schnelle Rückmeldung und Hilfe. Ich hatte es auch mit einem Previous- und Peek Funktion probiert gehabt. Jedoch war meine Syntax da komplett falsch. Es funktioniert jetzt so, wie ich es mir vorgestellt hatte mit dem Code von PedroNetto! Der Code von Marcus hat leider bei mir doppelte Einträge verursacht.
Gruß
David
Echte Duplikate entstehen hierbei nicht. Es hängt mehr davon ab, wo man diese Information generiert und dann belässt, also ob man das als assoziative Tabelle stehen lässt und/oder irgendwie zusammenführt und/oder die Ausgangstabelle löscht.