2016-07-28 6 views
0

Ich bin neu bei PowerPivot und DAX. Ich habe einige Online-Tutorials verfolgt. Jetzt habe ich ein kleines Problem, das ich nicht lösen kann. Ich habe folgende Daten:Werte vorheriges Datum und zweites vorheriges Datum in PowerPivot vergleichen

Date Instrument Value 2016-07-27 A 100 2016-07-27 B 98 2016-07-26 A 102 2016-07-25 B 99

Für jedes Datum würde Ich mag die Differenz (Gewinn/Verlust) in Value zwischen jüngstem Datum berechnen und zweiten jüngsten Datum. Für die Daten darüber wie folgt lauten würde:

Date Instrument Value Profit/Loss 2016-07-27 A 102 2 ([Val. inst. A 2016-07-27]-[Val. inst. A 2016-07-26]) 2016-07-27 B 98 -1 ([Val. inst. B 2016-07-27]-[Val. inst. B 2016-07-25]) 2016-07-26 A 100 2016-07-25 B 99

ich mit DAX versucht haben, das zweitgrößte Datum =EARLIER([Date]) haben mit zu finden, aber nicht zur Arbeit geschafft, es zu bekommen. Mit dem zweitgrößten Datum wäre ich vielleicht in der Lage, das Value zu diesem Datum zu finden. Irgendwelche Vorschläge, wie das gelöst werden könnte?

Antwort

0

Am Ende habe ich in drei Schritten eine Lösung gefunden (die Schritte können zu einem Schritt zusammengefasst werden). Zuerst ordne ich alle Daten ein, wobei die letzte 1 und die zweitletzte 2 sind. Danach erhalte ich für jede Zeile den Value für den zweitletzten Tag. Schließlich berechne ich den Unterschied zwischen der Value s aktuellen Zeile und dem Value für den zweitletzten Tag im Vergleich zum Datum dieser Zeile.

Um die Daten zu ordnen ich folgendes verwendet:

=RANKX(FILTER(ALL(table);EARLIER([Instrument])=[Instrument]);[Date];;FALSE())

Erklärung zu dem, was ich denke, die DAX Formel tut. funktioniert, indem Sie eine Tabelle nehmen und dann die Werte in einer Spalte in dieser Tabelle einstufen. Oben habe ich eine gefilterte Tabelle als Tabelle verwendet. Die gefilterte Tabelle erstellt eine neue Tabelle für jede Zeile, die nur das gleiche Instrument wie das Instrument für diese bestimmte Zeile enthält. Für die erste Zeile würde die gefilterte Tabelle wie folgt aussehen.

Date Instrument Value 2016-07-27 A 100 2016-07-26 A 102

Die Termine in diesem gefilterten Tabelle rangiert dann.

Date Instrument Value Rank 2016-07-27 A 100 1 2016-07-26 A 102 2

den Rang Verwenden ich dann Value die zweite letzten Tage, ziehen Sie für jede Zeile auf der Grundlage der Rank-1 der aktuellen Zeile.

Value second most recent date = CALCULATE(MAX([Value]);FILTER(table;EARLIER([Instrument])=[Instrument] && [Date Rank]= EARLIER([Date Rank]))

Schließlich berechne ich den Unterschied:

PnL = [Value] - [Value second most recent date]

Ich bin nicht sicher, was EARLIER tut, aber ich denke, es ist eine Art iterativer Prozess ist.

Verwandte Themen