2016-08-04 4 views
0

によって私は列にIDが個別にカウントしています - これは、次のように総計に等しくない小計の合計につながっている:DAXランクは日

enter image description here

私が何をしたいのランクであります支払日を時系列で表示し、表示する最高の日付のみを選択します。上記の例では、総計は変更されませんが、Townville行にはDistinct Student Countは表示されません。

これは非常に具体的な要件であり、私はDAXで簡単に行うことができます - 私はRANKXMAXの両方で再生しようとしましたが、これを解決することはできません。

ランクは、ユーザーが選択した時間フィルタの文脈に基づいている必要があります(2015年を選択した場合、2番目のランク1を与え、トップレコードは表示されません)。

答えて

1

これはあなたが探しているものだと思います。私はPowerPivotモデルに計算された列を追加して、前回の支払いに基づいたランクを提供しました日付と生徒の名前。

=RANKX(FILTER(Table1, [Student Name] = EARLIER([Student Name])), [Last Payment Date]) 

を...あなたのテーブルは「表1」と命名されたと仮定すると:それは次のように列のコードは1

として任意の学生のための最も初期の支払いをランク付けします!

FILTERは、その名前の学生のみに属する日付にランキングを限定するキーです。 、テーブル間のリレーションシップを設定するモデルの「ダイアグラム・ビュー」に移動し、電源ピボットウィンドウの[ホーム]タブで利用できるために、複数のテーブル

ため

を更新。

フィールドをあるテーブルから別のテーブルにドラッグしてリレーションシップを作成できます。これは、少なくとも1つのフィールドがユニークである場合にのみ機能します。モデルをディメンションモデルと見なし、ファクトのように動作するテーブルと、ディメンションのように動作する他のテーブルを考えるのは良い考えです。

コメントから、私はPaymentsを事実と同じようにして、コミュニティテーブルと学生テーブルにリンクさせようとします。この場合には、あなたは、次のコードを持つことができます:

=RANKX(FILTER(Table1, Related('Students'[Student Name]) = EARLIER('Students'[Student Name])), [Last Payment Date]) 

この計算された列には、あなたの支払いファクトテーブルの上になり、それが関連分野への参照を使用しています。

この特定のケースでは、学生名を検索するために使用される学生IDフィールド上でフィルタを実行する方が簡単です。

+0

ありがとうスチュワート、私はこのデータをすべて別のテーブルに追加してください。コミュニティテーブル、支払い/支払いテーブル、学生テーブルがあります。複数の情報テーブルに対して、この方法でFilterを使用する方法はありますか? – mwan

+0

関連するテーブルのケースの更新を追加しました。まだ十分ではない場合は、PowerPivotモデルの詳細についての質問を更新することをお勧めします。しかし、それが役立つことを望む! –

+0

これはすごく助けになった!ありがとう!私は、この問題を抱えている他の人のために、私の最終的な解決策で質問を更新するのに時間を割くでしょう。 – mwan