Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
merry2018
Creator III
Creator III

Summe aus einer Multiplikation klappt nur manchmal

Hallo zusammen,

ich brauche mal wieder eure Hilfe.

Und zwar geht es um eine Set Analysis Formel, welche manchmal berechnet wird und manchmal einfach "0" raus kommt.

Berechnen möchte ich folgendes: 

sum({<Flag={1}, Ort=>}Bestand * Bewegung)

Dieses funktioniert bei folgenden Zahlen(Der Flag ist beides mal 1):

sum(1007 * 0,35) = 352,45

aber bei diesen leider nicht:

sum(2915*6,3) = 0

Hat jemand eine Idee, an was das liegen kann?

Gruß

Merry

1 Solution

Accepted Solutions
swuehl
MVP
MVP

Normalerweise würde man versuchen, die Datensätze zu finden, für die die Funktion keinen Wert liefert.

Kannst du den Kontext nicht ein bisschen näher beschreiben.

Beachte auch die Probleme von FirstsortedValue mit mehreren Datensätzen mit gleicher Sort Order.

Eventuell DISTINCT qualifier benutzen.

View solution in original post

9 Replies
marcus_sommer

Ist beim zweiten Beispiel der Flag-Wert auch 1?

- Marcus

merry2018
Creator III
Creator III
Author

Ja ist er auch.

marcus_sommer

Normalerweise sollte das funktionieren, also falls 1 wirklich 1 ist und nicht etwa '1' stelle mal ein paar Screenshots ein, zu wo und wie die Formel eingesetzt wird und auch welche Daten hier anliegen.

- Marcus

merry2018
Creator III
Creator III
Author

ja davon bin ich auch ausgegangen, das es normal wenn es einmal funktioniert und die Daten das gleiche Schema haben auch bei den anderen mal klappen sollte. Ich werde es nochmal überprüfen auf den Hinweis hin und schauen was ich für Daten finde, welche ich hier rein stellen darf, da diese sehr umfangreich sind und zum größten teil nicht hochgeladen werden dürfen.

Gruß

Merry

swuehl
MVP
MVP

Könnte es sein, dass Bestand und Bewegung je nach Selektion nicht korrekt verbunden sind?

Dass also Sum(Bestand) und Sum(Bewegung) jeweils einen Wert ergibt, aber nicht Sum(Bestand*Bewegung)?

Ohne auch nur das Geringste über dein Datenmodell zu wissen, ist das natürlich eine Frage, die nur du beantworten kannst.

merry2018
Creator III
Creator III
Author

Die Beziehungen scheinen in Ordnung zu sein.

Aber die Vorberechnung des Bestands, welches im Script schon durchgeführt wird, klappt nur manchmal.

Dieser wird folgend ermittelt:

FirstSortedValue(OrtBestand, -letzteBewegung) as Bestand

Es sind immer beide Werte da, aber nur teils wird dieses Berechnet.

Direkt in der Tabelle kann ich diese Formel immer berechnen und dann auch weiter verwenden in der ursprünglichen Formel sum(B*B).

marcus_sommer

Vermutlich gibt es hier teilweise mehrere Werte und das führt dann zu NULL, siehe hier die Beschreibung aus der Hilfe:

firstsortedvalue ([distinct ] formel [, sortierung [, n ]])

Liefert den ersten Wert von Formel entsprechend der Sortierfolge Sortierung über die im group by-Zusatz von Formel bezeichneten Datensätze. sortierung muss numerische Werte ergeben, anhand derer aufsteigend sortiert wird, d. h. beginnend beim kleinsten Wert der formel. Steht vor sortierung ein Minus, wird die Sortierfolge umgekehrt und die Funktion liefert den letzten Wert. Teilen sich mehrere Werte den niedrigsten Platz in der Sortierfolge, ergibt die Funktion NULL. Wenn ein Wert n größer als 1 angegeben wird, wir der n. Wert in der Reihenfolge ausgegeben. Ist der Formel das Wort distinct vorangestellt, werden Dubletten nicht berücksichtigt.

Wenn dem so ist, müsstest Du die Werte irgendwie mehr granular halten, so dass sie wirklich eindeutig sind oder festlegen, welcher der Werte genommen werden soll. Davon und auch vom Datenmodell wird abhängen, welche zusätzlichen Schritte erforderlich sind, um diese Zuordnung treffen zu können.

- Marcus

swuehl
MVP
MVP

Normalerweise würde man versuchen, die Datensätze zu finden, für die die Funktion keinen Wert liefert.

Kannst du den Kontext nicht ein bisschen näher beschreiben.

Beachte auch die Probleme von FirstsortedValue mit mehreren Datensätzen mit gleicher Sort Order.

Eventuell DISTINCT qualifier benutzen.

merry2018
Creator III
Creator III
Author

Vielen Dank für eure beiden Antworten, ich glaub es lag vermutlich an dem niedrigsten Platz in der Sortierfolge, welches dann als Ergebnis NULL geliefert hat. Dieses habe ich nun gelöst indem ich ein DISTINCT verwendet habe und nun berechnet es mir alle Zahlen und falls nichts raus kommt, bzgl. fehlendem Datensatz ergibt es '0' und nicht mehr '-'.


Gruß

Merry