Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
schuster-franz_
Contributor III
Contributor III

sum Aggregierungsfunktion

Hallo,

ich hab ein Problem mit der sum-Aggregierungsfunktion (aber wahrscheinlich sehe ich vor lauter Bäume den Wald nicht mehr!):

In einem Tabellendiagramm sollte für eine Dimension eine Summe über ausgewählte Zeilen gebildet werden. Folgende Formel habe ich eingetragen:

sum({<Feldname={400}>} Betrag)

Das Problem besteht nun darin, dass die Summe nicht über alle ausgewählten Zeilen erfolgt. Zeilen mit gleichen Beträgen werden nur einmal summiert. Die Zeilen sind definitiv vorhanden, da diese mit einer fortlaufenden Nummer (Schlüssel in der SQL-Datenbank) eingelesen werden. Auch sind in weiteren Feldinhalte (wie Belegnummer, Belegdatum, etc.) unterschiede vorhanden.

Mit dem 'total'-Zusatz 'sum({<Feldname={400}>} TOTAL Betrag)' habe ich nur dann erfolg, wenn ich als Dimension zusätzlich den Key aus der SQL-Datenbank mit auswähle und 'Summe der y-Werte' wähle. Leider ist das nicht zielführend, denn dann bekomme ich ein Diagramm mit Tausenden von Zeilen.

Die Dimension ist '=Year(Datum)'

Bin für den einfachsten Tipp dankbar!!!

5 Replies
swuehl
MVP
MVP

Hallo,

nur noch mal zum Verständnis:

Das Problem tritt in der Zeile für den Gesamtwert auf (in einer Summentabelle, korrekt?)?

Jede einzelne Zeile ist in der Summe korrekt?

Weitere Frage: Das Datumsfeld ist für jeden Record vorhanden?

Kannst du hier ein kleines Beispiel-QV-File posten (Hochladen ist über den erweiterten Editor verfügbar, im editor-Fenster oben rechts).

Gruß,

Stefan

schuster-franz_
Contributor III
Contributor III
Author

Hallo Stefan,

ich hab jetzt die Applikation gekürzt und nur nur ein paar relevante Daten geladen.

Das Problem siehtst Du, wenn Du das Lesezeichen "für den Summen-Test" aufrufst. Dieses grenzt auf eine BWA_Zeilennr (400) und auf 4 SaPo_LfdNr (5055193, 5055198, 5055203, 5055208) ein:

Die Tabelle enthält dann noch diese 4 Zeilen mit je einem Betrag von -107,5. Das Diagramm summiert allerdings nur auf -107,5 anstatt auf die erwarteten -430.

Gruß

Franz

swuehl
MVP
MVP

Hallo Franz,

ich glaube das Problem ist, dass Betrag ein Schlüsselfeld ist (wenn du den Table-Viewer mit STRG-T öffnest, wirst du den synthetischen Key mit den Bestandteilen Datum, SaKo_Nr, BWA_Zeilennr, Betrag und Herkunft sehen, das sind die gemeinsamen Feldnamen in den verknüpften Tabellen).

Ein synthetischer Schlüssel muss nicht falsch oder schädlich sein, ich bin mir aber nicht sicher, ob du das absichtlich gemacht hast. Ich glaube nicht, dass du Betrag wirklich als Schlüsselfeld verwenden willst, oder?

Versuche, wenn es geht den synthetischen Schlüssel zu vermeiden, indem du Felder, die momentan noch den gleichen Namen haben aber unterschiedliche Bedeutung besitzen, unterschiedlich benennst (mit AS im script) und/ oder in dem du einen gemeinsamen Schüssel selbst erzeugst (Durch Aneinanderhänger der Feldwerte oder mit Funktion autonumber etc.).

Ich bin mir recht sicher, wenn du das Problem mit den Schlüsselfeldern gelöst hast, stimmt auch deine Summe.

(Du kannst auch den Gegencheck machen: Füge ein zusätliches Feld

...

Betrag as BetragTest,

....

in die Tabelle ein, in der du den Betrag Summieren willst. Dieses Feld müsste dir dann den richtigen Betrag in der Summe geben.)

Gruß,

Stefan

schuster-franz_
Contributor III
Contributor III
Author

Hallo Stefan,

Du hast Recht! Sobald ich in einer Tabelle den Feldnamen von Betrag ändere, funktioniert auch die Summenbildung.

Im Diagramm muss ich jetzt allerdings die Formel erweitern und das wollte ich vermeiden:

sum({<BWA_Zeilennr = {400}>} Betrag)

+ sum({<BWA_Zeilennr = {400}>} XBetrag)

Wie kann ich im Script bei gleichen Feldnamen die Schlüsselbildung vermeiden?

Gruß

Franz

swuehl
MVP
MVP

Bei gleichen Feldnamen läßt sich die Schlüsselbildung nicht vermeiden.

Ich hab dein Datenmodell noch nicht ganz verstanden, bzw. warum du in jeder Tabelle (ausser Datum) den Betrag brauchst, bzw. ob das wirklich inhaltlich der gleiche Betrag ist.

Ich würde versuche, das Datenmodell etwas umzugestalten, eine Faktentabelle und mehrere Dimensionstabellen, der Betrag sollte dann nur in der Faktentabelle stehen.

Den Bezug zu einer Dimension kannst du dann über entsprechende Links in die Dimensionstabellen schaffen.

Hoffe das hilft.

Stefan