2016-10-27 15 views
2

Excelで次の式が正常に動作しています。AVERAGE()で計算されたDAXメジャーのMDX構文

=CUBESET("ThisWorkbookDataModel", 
"TopCount(
[ProductBV].[Product Name].Children,10, 
sum(
(
[Calendar].[Week Ending].[All].[1/6/2013]:[Calendar].[Week Ending].[All].["&TEXT($E$2,"m/d/yyyy")&"], 
[ProductBV].[Moderation Status (ALL)].[All].["&$E$3&"] 
), 
[Measures].[Product Review Count] 
) 
)", 
"Top 10 to date") 

次のDAX式を使用してカウントを測定します。私はAVERAGE関数(製品の平均レビュー)を利用するものにDAXメジャーを変更したとき

Product Review Count:=COUNTROWS(ProductBV) 

しかし、CUBESET機能が正しく動作しません。それでもCUBESETには正しい数の項目がありますが、CUBERANKEDMEMBER(1-10)を使用すると、Average Ratingでトップ10の製品が表示されません。

Product Avg Review:=AVERAGE(ProductBV[Rating]) 

は、以下の式 '正常に動作していない':すべてのすべてで

=CUBESET("ThisWorkbookDataModel", 
"TopCount(
[ProductBV].[Product Name].Children,10, 
sum(
(
[Calendar].[Week Ending].[All].[1/6/2013]:[Calendar].[Week Ending].[All].["&TEXT($E$2,"m/d/yyyy")&"], 
[ProductBV].[Moderation Status (ALL)].[All].["&$E$3&"] 
), 
[Measures].[Product Avg Review] 
) 
)", 
"Top 10 to date") 

を、私のデータは非常に簡単です。私は、私の製品名、評価、日付、レビューステータスを含むカレンダーテーブルに1つのデータテーブルを接続しています。

マイダッシュボード内では、自分の日付($ E $ 2)とレビューステータス($ E $ 3)をユーザーがドロップダウンで変更できます。これが起こって、どのようにそれを修正することですなぜ

+-----------------+-------------------+------------+----------------+ 
| Submission Date | Moderation Status | Product ID | Overall Rating | 
+-----------------+-------------------+------------+----------------+ 
| 10/23/2016  | APPROVED   | Product 1 |    5 | 
| 10/23/2016  | APPROVED   | Product 2 |    5 | 
| 10/23/2016  | APPROVED   | Product 3 |    5 | 
| 10/23/2016  | REJECTED   | Product 3 |    3 | 
| 10/23/2016  | REJECTED   | Product 4 |    3 | 
+-----------------+-------------------+------------+----------------+ 

誰も教えてもらえますか?

+0

Excelの機能を使用する必要があるのは不思議です。 PowerPivotモデルでDAXを使って計算してみてください。あなたがあなたのモデルについての詳細を述べるならば、あなたにいくつかの助言を与えることができます。 –

+0

Excelの機能を使用する私の理由は、ダッシュボード上に週平均週数が週ごとに変化した上位10製品を表示することでした。私は何百もの製品を持っているので、格付けが変更された金額でソートされた大きなテーブルではなく、トップ10だけが表示されるようにしたい。 DAXですべてをやって(そしてモデルの詳細を提供するのは楽しいですが)、Excelの機能を使用しないとこのアプローチがどういう結果になるかはわかりません。 – Chris

+0

DAXでは、特定の日付範囲の上位10製品の平均を簡単に取得できます。以前に述べたように、モデルとサンプルのデータを提供すると、アドバイスが得られます。 –

答えて

1

私はあなたの質問を見て、PowerPivotでモデル化した場合、Excelの式とコントロールを使ってダッシュボードを作成する理由を知りました。 PowerPivotを使用すると、より堅牢で信頼性の高い方法でデータを分析および視覚化できます。

あなたの最初のアプローチは非常に複雑であり、そのアカウントに取ってmantainするのは難しいです:あなたは新製品があなたの元に追加されたときに、ダッシュボードを編集する必要が

  • Excelの関数は、パラメータとして特定の値を期待しており、ユーザーがそれを変更してエラーを引き起こす可能性があるため、エラーが発生しやすくなります。
  • PowerPivotの計算は、Excelの関数よりも高速に、特に大規模なデータセットに対して実行されます。
  • データとのやり取りをユーザにあまり提供することはできません。

これは私があなたのPowerPivotモデルにconectedピボットテーブルを使用して構築したいダッシュボードです。

enter image description here

DOWNLOAD THE EXCEL FILE HERE

私は4つのDAX対策使用このダッシュボード構築するには:

This Week := 
CALCULATE (
     [Product Avg Review], 
     FILTER (
      ALL (Calendar), 
      Calendar[Week Ending] <= MAX (Calendar[Week Ending]) 
     ) 
    ) 

Last Week = 
    CALCULATE (
     [Product Avg Review], 
     FILTER (
      ALL (Calendar), 
      Calendar[Week Ending] 
       <= MAX (Calendar[Week Ending]) - 7 
     ) 
    ) 

をあなたは2つのピボットテーブル、正と負の引っ越し引っ越しを表示するために、他の1を示すための1つを作成することができます作業の措置で
Positive Movement := 
    (
     CALCULATE (
      [Product Avg Review], 
      FILTER (
       ALL (Calendar), 
       Calendar[Week Ending] 
        <= MAX (Calendar[Week Ending]) - 7 
      ) 
     ) 
      - CALCULATE (
       [Product Avg Review], 
       FILTER (
        ALL (Calendar), 
        Calendar[Week Ending] <= MAX (Calendar[Week Ending]) 
       ) 
      ) 
    ) 
     * -1 

Negative Movement := 
    CALCULATE (
     [Product Avg Review], 
     FILTER (
      ALL (Calendar), 
      Calendar[Week Ending] 
       <= MAX (Calendar[Week Ending]) - 7 
     ) 
    ) 
     - CALCULATE (
      [Product Avg Review], 
      FILTER (
       ALL (Calendar), 
       Calendar[Week Ending] <= MAX (Calendar[Week Ending]) 
      ) 
     ) 

注:私のExcelのUIはスペイン語であり、あなたはこれに固執しないことを願っています。 Googleの指示と検索に従うだけで、Pivo​​t Tablesに関する豊富な情報が得られます。

enter image description here

Rowsペインでの対策(あなたが構築しているピボットテーブルに従う)、This WeekPositive MovementまたはNegative MovementLast Weekを追加Valuesで、Product Nameを追加します。あなたはテーブルが構築されたら

enter image description here

あなたは、TOP X Product Namesを取得する必要があります。

enter image description here

そして、これらの設定を使用します:

enter image description here

変更を行タグアイコンフィルタを(以下の設定が正発動ピボットテーブルのためのものである)をクリックし、各ピボットテーブルに

Positive MovementNegative Movementをフィルタリングして、負の移動テーブルのトップ5 Product Namesを取得します。

純粋にDAXでトップ5の製品名を得ることができますが、ピボットテーブルフィルタオプションを使用して、トッププロダクトのいくつでもダイナミックなままにしておく方が良いと思います。基になるDAXを変更する必要はありません。

次に、条件付き書式を追加するだけで済みます。

これが役立つかどうか教えてください。

+0

ちょっとアレハンドロ、あなたのアプローチは治療を働く!私の最初の理由は、フィルターが私のダッシュボード上に多くの部屋を占めていたということです。しかし、私がやったことはすべて取っていきますが、私のドロップダウンフィルターを保持して、VBAをオフにしてピボットテーブルをフィルタリングします。そうすれば、私は両方の世界からベストを得られるはずです。私は本当にあなたの広範なドキュメントだけでなく、この問題のすべてのあなたの助けに感謝します。多くの感謝 - クリス! – Chris

+0

@Chris、私はあなたのニーズに私のソリューションを実装することをうれしく思っています。どういたしまして。 –

2

これにより、セットCUBESETが生成されます。

セットには数がありますので、COUNTROWSは正しく機能します。

メジャメントの平均値はAVERAGEになりますか?これは非決定的なようですか?

ProductBV[Rating]によって返されたセットを、平均を持つ測定値を指定する後続のキューブ関数に供給できますか?

+0

返事をありがとう。あなたの最初の2つのコメントについては、この私の数式はキューブを返し、COUNTROWSは正しく働いていると言っても間違いありません。私はあなたの3番目のコメントの意味を理解していません(まだMDXにはまったく新しいです)。 [商品平均評価]は[商品名]の[商品評価]の平均です。あなたの最後のコメントは、アウターがトップカウントを、インナーがProduct Avg Reviewを日付範囲と調整ステータスでフィルタリングするようにセットをネストすることを提案していますか?私が助けてくれれば、私の投稿にマイナーな編集を加えました。 – Chris

+0

@Chris ok - 私の間違い - 「AVERAGE(ProductBV [Rating])」はDAXですか? – whytheq

+0

そうです。 PowerPivotデータモデルにアクセスするExcelのキューブ関数。申し訳ありません - 私の最初の投稿に明示されていたはずです – Chris

関連する問題