4

PowerPivot に接続されたピボットテーブル内で、定義されたグループごとに最大値と最小値を特定する必要があります。

対応する PowerPivot テーブルにリンクされている次のベース Excel テーブル (ASCII 経由で投稿) を参照してください。

-------------------------------------------------
Customer   |  Store  |  Transaction Sequence No | 
-------------------------------------------------       
     A           1                  1
     A           1                  2
     A           1                  3
     A           2                  1
     A           2                  2
     B           1                  1
     B           1                  2
     B           2                  1

ご覧のとおり、グループを一意に定義する上記の 2 つの列があります。

  1. お客様

各グループには、1 つまたは複数のトランザクションが存在する可能性があり、それぞれに上記の [Transaction Sequence No]値が関連付けられています。

2 つの DAX メジャーを介して結果として得られるピボットテーブル内で、各一意のグループに関連付けられた[トランザクション シーケンス番号]の最小値と最大値をリストしたいと思います。

これにより、次のピボットテーブルが生成されます。

----------------------------------------------------------------------------
Customer   |  Store  |  Transaction Sequence No |   Max eq No | Min Seq No |
---------------------------------------------------------------------------- 
     A           1                  1                  3           1
     A           1                  2                  3           1
     A           1                  3                  3           1
     A           2                  1                  2           1
     A           2                  2                  2           1
     B           1                  1                  2           1
     B           1                  2                  2           1
     B           2                  1                  1           1

現在、ユーザーがスライサーまたはフィルターを介して[Transaction Sequence No]列に対してフィルターを適用することを決定した場合、これらの新しい DAX メジャーの両方が動的に更新されることが重要です。

この例では、ユーザーがフィルターを適用して[Transaction Sequence No]の値3を除外することを選択した場合、ピボットテーブルのデータが更新され、新しい最大値と最小値が反映されます。

----------------------------------------------------------------------------
Customer   |  Store  |  Transaction Sequence No |   Max eq No | Min Seq No |
---------------------------------------------------------------------------- 
     A           1                  1                  2           1
     A           1                  2                  2           1
     A           2                  1                  2           1
     A           2                  2                  2           1
     B           1                  1                  2           1
     B           1                  2                  2           1
     B           2                  1                  1           1

これを実現するための適切な DAX 構文を策定するのに問題があります。

4

3 に答える 3

2
MinTSeq:=
CALCULATE(
    MIN('table'[Transaction Seq No])
    ALLSELECTED('table'[Transaction Seq No])
)

そこに着くはずです。min を MAX() に置き換えることができます。

ALLSELECTED()の詳細を読んでください。

于 2015-10-29T14:17:30.247 に答える
1

esthetic_a 様、ご丁寧なご回答ありがとうございます。

残念ながら、DAX ステートメントには各グループの min() 値が表示されません。[Transaction Sequence No]値ごとに min() 値が表示されますが、これは私が求めていたものではありません。

元の投稿 (3 番目の表) で概説したように、各グループに関連付けられた min() 値を繰り返す必要がありました。

しかし、あなたのソリューションは私を正しい方向に向け、必要なことを達成することができました.

参考までに、私の意図は、どの[Transaction Sequence No]値が最も低い値を含んでいるかを特定し、グループごとに最も低い[Transaction Sequence No]値に関連付けられた[Total Cost]メジャーのみを合計することでした。

あなたは正しい方向を示してくれました。私は次の DAX ステートメントを使用してこの要件を満たしました。

=countrows(filter(allselected(Table1[Transaction Sequence No]),[Sum of Transaction Sequence No](values(Table1[Transaction Sequence No])) >[Transaction Sequence No])) + 1

この DAX ステートメントは、このディメンション属性に対してスライサーを介してフィルターが適用されている場合でも、グループごとに各[Transaction Sequence No]値を動的にランク付けします。

次に、関連する Rank() 値が 1 の場合にのみ[Total Cost]メジャー値を返す別の DAX メジャーを作成します。

最後に、ワークブック内で現在適用されているユーザー定義フィルター (スライサーまたはピボット テーブル フィルターを介して) に基づいて、最初の[Transaction Sequence No]値に関連付けられた[Total Cost]値のみを返す、上記で新しく作成されたメジャーを合計します。 .

ありがとう、あなたは私を正しい方向に向けてくれました、そして私は感謝しています!

気をつけて

于 2013-08-27T21:28:55.843 に答える