2016-07-28 5 views
0

PowerPivotを初めて使用しました。DAXです。私はいくつかのオンラインチュートリアルに従ってきました。今私は解決できない小さな問題があります。私は最新の日付と第二の最新の日付の間Valueの違い(利益/損失)を計算したい日付ごとPowerPivotの前日と前日の値の比較

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

:私は、次のデータを持っています。それ以上のデータは、以下のことになるために:

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

私は=EARLIER([Date])を使用して、第2の最大の日付を見つけるためにDAXと試みたが、それは仕事を得るために管理していません。 2番目に大きい日付で、おそらくその日付に対応するValueを見つけることができます。どのようにこれを解決することができますか?

答えて

0

私は3つのステップで解決策を考え出しました(ステップは1つのステップにまとめられます)。まず、すべての日付をランク付けします。最新の日付は1であり、2番目に近い日付は2です。その後、各行の2番目に最近の日のValueを取得します。最後に、現在の行のValueと、その行の日付と比較して2番目に新しい日のValueの差を計算します。私はDAX式をやっていると思うものに

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

説明:私は次のように使用される日付をランク付けする

RANKXはテーブルを取得し、そのテーブルのカラムの値をランク付けすることによって機能します。上の例では、フィルタリングされたテーブルをテーブルとして使用しました。フィルタ処理されたテーブルは、その特定の行の計測器と同じ計測器のみを含む行ごとに新しいテーブルを作成します。最初の行では、フィルタリングされたテーブルは次のようになります。

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

そのフィルタテーブル内の日付は、ランクされています。私は、現在の行のRank-1に基づいて、各列のための第二の最新の日付Valueを引き出しランクを使用して

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

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

最後に、私は違いを計算します。

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

私はEARLIERが何をしているのかわからないが、私はそれが反復的なプロセスのいくつかの並べ替えだと思います。

関連する問題