Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo Zusammen,
ich bräuchte mal wieder eure Hilfe und zwar geht es um die Aggregierungs Funktion welche ich in einer Tabelle benötige, zu mindestens vermute ich das es mit dieser Funktionieren sollte.
Und zwar habe ich folgende Tabelle:
Auftrag | Aktivitaet | Position | ProduktionsMenge | MengeGut | MengeAuschuss | AusschussAggregiert |
111 | 1234 | 10 | 600 | 599 | 1 | 1 |
111 | 1235 | 20 | 600 | 599 | 0 | 1 |
111 | 1236 | 30 | 600 | 597 | 2 | 3 |
111 | 1237 | 40 | 600 | 595 | 2 | 5 |
222 | 1244 | 10 | 400 | 350 | 50 | 50 |
222 | 1245 | 20 | 400 | 340 | 10 | 60 |
222 | 1246 | 30 | 400 | 320 | 20 | 70 |
Und ich möchte die letzte Spalte (AusschussAggregiert) mit einer Formel berechnen, und zwar soll je Auftrag der Ausschuss aufaddiert werden und auch immer die jeweilige Summe bis zu dieser Position hin angezeigt werden.
Versucht habe ich es mit folgender Formel:
sum(aggr(sum(MengeAuschuss),Auftrag))
aber damit wird immer nur die letzte Zahl des Auftrages angezeigt, also in unserem Beispiel nur die 5 und 70, bei den anderen Zeilen ist eine '0'.
Oder mit dieser Erweiterung der Formel "+above(sum(MengeAusschuss))" also:
sum(aggr(sum(MengeAuschuss)+above(sum(MengeAusschuss)),Auftrag))
Aber eigentlich sollte es eine Ergänzung geben, bei welcher ich sage nach was ich innerhalb des Auftrages Sortieren will und wie, also z.b. folgende Ergänzung: (Position, (NUMERIC, ASCENDING))) aber damit funktioniert es garnicht und bringt nur Fehler.
Wer kann mir sagen was ich übersehen habe oder wo ich etwas vergessen habe oder anders machen sollte??
Grüße
Merry
Ich hätte hierzu nochmal eine weitere Frage und zwar funktioniert dies in der Tabelle über eine Formel super, aber ich benötige diese Vorberechnung jetzt auch schon im Script.
Ist dies auch möglich? Ich habe es schon mit Previeous() versucht, um den Vorgänger zu ermitteln, aber damit kann ich die Vorgänger Werte nicht kumulieren oder was kann ich dafür sonst verwenden, um die Formel oben nachzubauen?
Denn ich hätte gerne die einzelnen Positionen pro Auftrag in Ihrer Numerischen Reihenfolge aufsummiert in einer weiteren Spalte. Wie z.b. folgend:
TeileNummer | Position | Menge | KummulierteMenge |
Teil001 | Pos1 | 30 | 30 |
Teil001 | Pos2 | 50 | 80 |
Teil001 | Pos3 | 20 | 100 |
Teil002 | Pos1 | 15 | 15 |
Teil002 | Pos2 | 22 | 37 |
Grüße
Merry
Sowas kann man mit peek() machen:
load *,
if(TeileNummer = previous(TeileNummer),
rangesum(Menge, peek('KummulierteMenge')), Menge) as KummulierteMenge
resident Source order by TeileNummer, Position;
- Marcus
Danke dafür, das sieht eigentlich ganz gut aus nur scheint es noch nicht ganz zu funktionieren.
Denn er hängt sich beim reload des Scripts immer auf.
Ist es korrekt, dass in der Formel der SpaltenName verwendet werden soll, welches die Formel als Ergebnis bringen soll?
also peek('SelbeName') wie as SelbeName?
Gruße
Merry
Wenn es einen Skript-Fehler gibt, dann ist da syntaktisch irgendwas verkehrt. Das könnte hier am order by liegen, was nur in Verbindung mit Resident Loads erlaubt ist, also nicht bei From. Wenn es das nicht war, dann nimm mal verschiedene Felder, Funktionen usw. aus dem Load rein und raus - dann findet man den Fehler meisten ganz schnell.
Ansonsten war:
… peek('SelbeName') … as SelbeName ...
genauso gemeint.
- Marcus
Vielen Dank.
Es lag tatsächlich an falschen Order By felder, aber jetzt funktioniert es.