2017-09-11 19 views
1

私の質問は、ゼロを考慮して日々の平均を計算したいと思うことです。平均を含むDAX

私はそれを明確にしましょう:私は、次の表に、各カテゴリのための単位の一日平均値を計算したい

Data table

私はの値を合計すると毎日とカテゴリは、私が取得:

enter image description here

私はAに含めたいです馬力はゼロを計算する。

私は、次のコードを使用し

SUMMARIZE(
    Data, 
    Data[Category], 
    "Average", 
    AVERAGEX(
     SUMMARIZE(
      Data, 
      Data[Date], 
      "Sum of Units", 
      SUM(Data[Units]) 
     ), 
     [Sum of Units] 
    ) 
) 

をしかし、問題は、カテゴリBのために、それが0で当時を考慮していないということです。

解決方法を教えてください。

ありがとうございます!

ホルヘ

答えて

0

SUMMARIZE(
    Data, 
    Data[Category], 
    "Average", 
    AVERAGEX(
     UNION(
      SUMMARIZE(
       Data, 
       Data[Date], 
       "Sum of Units", 
       SUM(Data[Units]) 
      ), 
      ADDCOLUMNS(
       EXCEPT(
        ALL(Data[Date]), 
        VALUES(Data[Date]) 
       ), 
       "Sum of Units", 
       0 
      ) 
     ), 
     [Sum of Units] 
    ) 
) 
0

あなたが(あなたの最初のデータ・テーブル内の)その中にゼロ値との根本的な行を持っている必要がありますように私には思えます。今、2011年2月1日にBの値がゼロになるわけではありません。 |値を含む行を追加すると、 02/01/2017 | B | 0 |私はあなたがそれについての平均的なアカウントを見ることを信じています。物事はあなたのために今立つので、私はピボットテーブルが実際には0値ではなく値(空白)を反映していると信じているので、現在のところゼロはカウントされていません。

1

解決方法の1つは、カレンダーテーブルを作成して、グループ化期間の日数をカウントする方法です。これは、例えば4-4-5のような非標準のカレンダーも使用できることを意味します。

カレンダーテーブルを作成すると、DAXでFIRSTDATELASTDATEの機能を利用できます。

カレンダーテーブルに過去の日付列を追加することをお勧めします。これは、次の数式でDAXを使用して作成できます。計算列で使用されるDAXの今日の機能は、モデルが更新されたときのみ評価されます。例えばのでPast_Dates

Past_dates = IF(、TODAY()> [日付]、TRUE()BLANK())

と呼ばれる私の例では

私は日付テーブルで計算列を作成した場合私は今日のイラストレーションをイラストレーションのために使っています。

Start_date:=FIRSTDATE(Dates[Date]) 

End_Date:=LASTDATE(Dates[Date]) 

Today:=TODAY() 

EndPhased:=CALCULATE(LASTDATE(Dates[Date]), Dates[Past_dates] = TRUE()) 

空のピボットテーブルに追加すると、次のように評価されます。 複数年のデータがある場合は、ピボットのどこかに年を設定することをお勧めします。

enter image description here

過去の旗を持っていることのアイデアは、彼らが将来的にあることに起因する任意のデータではないであろう日を数えることから維持することです。したがって、たとえば9月には、11日間の売り上げを使用するだけで、フル30は使用しません。

次の例に示すように、開始日と終了日の検索は四半期単位でも機能します。だから、

enter image description here

今、我々は期間の開始日と終了日を取得する方法を持っていることを、次のステップは、私たちの計算されるメジャーにそれを追加しています。

以下の例では、すべての一意のカテゴリ名を繰り返しています。カテゴリ内では、販売単位を合計し、EndPhasedとStart_Date + 1の間の日数で除算します。次に、その期間のデータを持つカテゴリの数で結果を平均化します。

私は最善の方法は、UNIONの機能を使用して、不足しているゼロを追加することだと思います
Average:=AVERAGEX (
    VALUES (Data[Category]), 
    CALCULATE (DIVIDE (SUM (Data[Units]), [EndPhased] - [Start_date] + 1)) 
)