Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
DS395
Contributor III
Contributor III

Zähler anhand einer Spalte und mit führender Null, sofern bestimmte Länge des Zählers erreicht ist.

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

Labels (2)
1 Solution

Accepted Solutions
PedroNetto
Partner - Creator
Partner - Creator

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:

PedroNetto_0-1676297725377.png

 

 

View solution in original post

4 Replies
PedroNetto
Partner - Creator
Partner - Creator

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:

PedroNetto_0-1676297725377.png

 

 

marcus_sommer

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;

DS395
Contributor III
Contributor III
Author

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

marcus_sommer

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.