Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Datumsformate - Differenz in Monaten berechnen - nur Anzeige Daten der letzten x Monate

hallo  zusammen,

ich bin noch relativ neu in QlikView und habe das Problem, dass ich gerne die Differenz von 2 Datumsfeldern in Monaten berechnen möchte - gleichzeitig soll dieses Ergebnis in Monaten die Anzeige einer Datentabelle steuern.

Welche Daten habe ich zur Verfügung:

Datum heute: today () - hat das Format DD.MM.YYYY

Faktendatum: datum_fakt ist bereits ein num. Format

Berechnet werden soll die Differenz zwischen today () und datum_fakt in Anzahl Monaten.

Die Daten der dazugehörigen Tabelle sollen mit den einzelnen Monatswerten angezeigt werden, wenn die Differenz innerhalb der letzten 12 Monate liegt.

kann mir hier jemand helfen?

vielen lieben Dank

1 Solution

Accepted Solutions
swuehl
MVP
MVP

Hallo Ulrike,

ich denke ich habe verstanden, was du willst.

Ich würde das immer noch mit einer set analysis expression machen in etwas so:

Bau dir ein straight table mit Dimension Monat (ich nehme an, dass du diese Dimension hast, am besten in einem Master Calendar zusammen mit allen benötigten Datumsfeldern, falls nicht, such mal nach Master Calendar hier im Forum, gibt einige Beispiele).

Als expression dann

=sum({<datum_Eroeffnung= {">=$(=monthstart(addmonths(today(),-12)))"} >} UmsatzFact)

Die Set analysis expression macht folgendes, sie selektiert (nur für diese Berechnung) alle Filialen mit Eröffnung nach dem Datum monthstart(addmonths(today(),-12)) was du von innen nach ausse lesen kannst als nimm heute (29.8.2011), rechne -12 Monate drauf (29.8.2010) and nimm davon den Monatsstart (1.8.2010).

Ob das im Detail wirklich so funktioniert, hängt ein wenig (ne eigentlich hauptsächlich), von deinem Datenmodell ab, ich gehe mal davon aus, wenn du ein Eröffnungsdatum selektierst, selektierst du implizit (weisser Hintergrund in Listboxen) die entsprechende Filiale und alle Umsätze mit.

Hoffe das hilft,

Stefan

View solution in original post

6 Replies
Not applicable
Author

Hallo Ulrike,

kannst du ein Beispiel geben und das Ergebnis, was du am ende sehen willst. ich kann dann versuchen.

Gruß

Sravan

PS: Es gibt eine Deutschsprachige Gruppe hier http://community.qlik.com/groups/german-user-group

Da kriegst du mehr antworten als hier, wenn du auf deutsch schreibst.

swuehl
MVP
MVP

Hallo Ulrike,

ich glaube wir müssten erstmal festlegen, wie die Differenz definiert ist. zum Beispiel

2.9.2011 - 29.8.2011

Ergibt das eine Differenz von

0 Monaten - da noch kein ganzer Monat verstrichen ist

1 Monat - da die Termine innerhalb eines Monats liegen

2 Monaten, da August und September "betroffen" sind

oder ca. 0,1 Monat

GGf müsste man auch noch festlegen, wie lange ein "Standardmonat" ist.

Deine Frage klingt am Ende aber danach, dass du gar nicht direkt an der Differenz zwischen zwei Datumsangaben

interessiert bist, sondern nur alle Werte, deren Datum innerhalb einer gewissen Periode liegen, in deine Berechnung einbeziehen willst.

Das könntest du mit einem set analysis Ausdruck machen, z.b.

=sum({<datum_fakt= {">=$(=addmonths(today(),-12))"} >} DEINFACT)

Der Teil zwischen {<>} limitiert die Auswahl für die Berechnung auf Werte mit Datum innerhalb der letzten 12 Monate.

Genaueres zur set analysis siehe Hilfe oder auch

http://iqlik.wordpress.com/2010/11/27/the-magic-of-set-analysis-point-in-time-reporting/

Gegebenfalls musst du diesen Ausdruck auch noch erweitern, wenn du weitere Datumsfelder benutzt (dann musst du diese evtl, im Ausdruck noch löschen,

z.b. mit

,monat_fakt=

siehe dazu die Beispiele in obigem Link.

Hoffe das hilft,

Stefan

Not applicable
Author

hallo Stefan,

vielen Dank für deine schnelle Antwort.

Mein Frage, die ich abzubilden versuche ist: zeige die Umsatzdaten nach Monaten für alle Filialen, die in den letzten 12 Monaten neu eröffnet wurden. Zu jeder Filiale gibt es das Eröffnungsdatum und ich habe mein System-Tagesdatum von heute zur Berechnung zur Verfügung.

Was ich benötige ist eigentlich die Differenz zwischen zwei Monatswerten, z.B.

heute: 29.08.2011

Eröffnungsdatum einer Filiale: 10.10.2010

mich interessiert dabei nicht die exakte Differenz in Tagen, sondern nur die der Monate, d.h. ich würde rechnen:

first of month (10/2010) zu first of month (08/2011) -> 10 Monate Differenz, dabei betrachte ich nicht, ob das Datum am Anfang, in der Mitte oder am Ende des Monats liegen.

swuehl
MVP
MVP

Hallo Ulrike,

ich denke ich habe verstanden, was du willst.

Ich würde das immer noch mit einer set analysis expression machen in etwas so:

Bau dir ein straight table mit Dimension Monat (ich nehme an, dass du diese Dimension hast, am besten in einem Master Calendar zusammen mit allen benötigten Datumsfeldern, falls nicht, such mal nach Master Calendar hier im Forum, gibt einige Beispiele).

Als expression dann

=sum({<datum_Eroeffnung= {">=$(=monthstart(addmonths(today(),-12)))"} >} UmsatzFact)

Die Set analysis expression macht folgendes, sie selektiert (nur für diese Berechnung) alle Filialen mit Eröffnung nach dem Datum monthstart(addmonths(today(),-12)) was du von innen nach ausse lesen kannst als nimm heute (29.8.2011), rechne -12 Monate drauf (29.8.2010) and nimm davon den Monatsstart (1.8.2010).

Ob das im Detail wirklich so funktioniert, hängt ein wenig (ne eigentlich hauptsächlich), von deinem Datenmodell ab, ich gehe mal davon aus, wenn du ein Eröffnungsdatum selektierst, selektierst du implizit (weisser Hintergrund in Listboxen) die entsprechende Filiale und alle Umsätze mit.

Hoffe das hilft,

Stefan

Not applicable
Author

hallo Stefan,

juhu, es klappt  - vielen herzlichen Dank für deine Hilfe

swuehl
MVP
MVP

Freut mich.

Hoffe das mit der set analysis war nicht zu kompliziert für den Anfang, früher oder später (eher früher) sollte frau sich aber eh damit auseinandersetzen.

Mir ist hinterher eingefallen, dass du dasselbe wahrscheinlich auch mit einer einfachen if-Abfrage hättest machen können (ist aber nicht so performant wie mit set analysis):

=sum(if(datum_Eroeffnung >= monthstart(addmonths(today(),-12)),UmsatzFact))

Gruß,

Stefan