Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo,
in einer Tabelle werden Datensätze und Korrekturdatensätze erfasst. Die Korrekturdatensätze enthalten nur bei den geänderten Werten Inhalte größer null.
Daraus soll eine Tabelle entstehen, die nur einen Datensatz je Schlüssel enthält mit dem letzten gemeldeten Wert > 0.
Der Load für die erste Tabelle:
TEST:
Load * inline
[
KEY, Date, A, B, C, D, E
111, '01.01.2020', 15, 15, 15, 15, 15
111, '02.02.2020', 0, 0, 5, 10, 0
111, '03.03.2020', 25, 0, 0, 25, 5
112, '01.01.2020', 22, 22, 22, 22, 22
112, '02.02.2020', 0, 0, 2, 0, 11
112, '03.03.2020', 0, 25, 25, 11, 0
];
Schon mal vielen Dank
Claus
Mit der gegebenen Datenstruktur wird es wohl eher nicht möglich sein oder es wird reichlich aufwändig, denn hier sollen ja Datensätze mit Bedingungen gemixt werden. Insofern würde ich die Datenstruktur erstmal transformieren, dann filtern, dann nochmal filtern und/oder flaggen und es vermutlich dann auch in dieser Struktur belassen, also nicht wieder eine Kreuztabelle daraus generieren. Also in etwa so:
t1: crosstable(K, V, 2)
Load * inline
[
KEY, Date, A, B, C, D, E
111, '01.01.2020', 15, 15, 15, 15, 15
111, '02.02.2020', 0, 0, 5, 10, 0
111, '03.03.2020', 25, 0, 0, 25, 5
112, '01.01.2020', 22, 22, 22, 22, 22
112, '02.02.2020', 0, 0, 2, 0, 11
112, '03.03.2020', 0, 25, 25, 11, 0
];
t2: noconcatenate load *, rowno() as RowNo resident t1 where V > 0;
inner join(t2) load KEY, K, date(max(Date)) as Date resident t2 group by KEY, K;
drop tables t1;
exit script;
In einer Pivot lässt sich das dann wie im Zielszenario gezeigt abbilden.
- Marcus
Hallo,
wenn es im Script passieren soll, dann sollte dies durch die where klausel erledigt sein. Die Originaltabelle TEST wird gelöscht. Werden beide Tabellen gebraucht, dann müssen, die Spaltennamen geändert werden.
Oder soll dies im Chart erfolgen?
Final:
NoConcatenate load *
Resident TEST
where A*B*C*D*E>0; // wenn irgendwo eine 0 steht wird Datensatz NICHT genommen
drop table TEST;
Hallo,
das ist genau das, was ich nicht wollte - es werden nur die beiden Ausgangszeilen berücksichtigt:
Es sollen aber die geänderten Werte aus den nachfolgenden Datensätzen berücksichtigt werden (siehe Zieltabelle in der Excel-Kopie, Zeilen 15 bis 17)
Mit der gegebenen Datenstruktur wird es wohl eher nicht möglich sein oder es wird reichlich aufwändig, denn hier sollen ja Datensätze mit Bedingungen gemixt werden. Insofern würde ich die Datenstruktur erstmal transformieren, dann filtern, dann nochmal filtern und/oder flaggen und es vermutlich dann auch in dieser Struktur belassen, also nicht wieder eine Kreuztabelle daraus generieren. Also in etwa so:
t1: crosstable(K, V, 2)
Load * inline
[
KEY, Date, A, B, C, D, E
111, '01.01.2020', 15, 15, 15, 15, 15
111, '02.02.2020', 0, 0, 5, 10, 0
111, '03.03.2020', 25, 0, 0, 25, 5
112, '01.01.2020', 22, 22, 22, 22, 22
112, '02.02.2020', 0, 0, 2, 0, 11
112, '03.03.2020', 0, 25, 25, 11, 0
];
t2: noconcatenate load *, rowno() as RowNo resident t1 where V > 0;
inner join(t2) load KEY, K, date(max(Date)) as Date resident t2 group by KEY, K;
drop tables t1;
exit script;
In einer Pivot lässt sich das dann wie im Zielszenario gezeigt abbilden.
- Marcus
Hallo Markus,
vielen Dank für die Lösung.
Ich habe es mir leichter vorgestellt.....😀
-Lösung als Pivot und Generic Table
Danke nochmal
Claus