2017-03-06 4 views
1

Ich versuche, die Werte in einer Spalte VAL für die letzten 14 Tage von T_DATE nach Konto zu summieren.Spotfire - Summe() über Lookback

Mein Ausdruck ist

if([RND_FLG]=1 ,Sum([VAL]) over (Intersect([T_ACC],LastPeriods(14,[T_DATE]))),null) 

9/10 die Ergebnisse korrekt sind, aber dies ist nicht immer der Fall.

Jede Hilfe wird geschätzt.

Beispieldaten unter:

ALLDATE  T_ACC  VAL  14DAYVAL 
12/13/2016 1501313137 500000 500000 
12/15/2016 1501313137 800000 1300000 
12/19/2016 1501313137 500000 1800000 
12/20/2016 1501313137 500000 2300000 
12/21/2016 1501313137 500000 2300000 
12/22/2016 1501313137 500000 3300000 
12/30/2016 1501313137 200000 3500000 

Antwort

1

Sie erhalten vermutlich falsche Ergebnisse, wenn Sie Lücken in Ihren Daten haben. LastPeriods() ist nicht dasselbe wie n - Tage, also aggregiert es über n Zeilen im Vergleich zu Tagen. Sie können Ihre Daten auf 1 Zeile pro Tag normalisieren, um dies zu umgehen.

+0

Ich habe versucht, mit der Funktion DateAdd, (DateAdd ("Tag", - 14, [T_DATE])), um das Cutoff-Datum für jeden Tag zu etablieren, aber immer noch falsch beendet. Macht das unten Sinn? if (([RND_FLG] = 1), Summe ([VAL]) über (Schnitt ([T_ACC], DateAdd ('Tag', -14, [T_DATE]))), NULL)) Können Sie sich Alternativen vorstellen? Dies? –

+0

Zur weiteren Klarstellung möchte ich nicht den Wert jeder einzelnen Zeile, die in den letzten 14 Tagen aufgetreten ist, summieren, sondern nur die Werte, die als "rund" betrachtet werden (haben 5+ Nullen), weshalb es die if-Anweisung von gibt das rnd_flag in der obigen Gleichung. Vielen Dank! –

+0

@LaurenFetky Ich denke, dass Sie Ihre Daten normalisieren oder in Python oder TERR behandeln müssen – scsimon