2017-09-06 49 views
0

好,三列,訂單號,產品號和數量的高度簡化的表...DAX平均各粒

Order | Product | Qty 
1  | A  | 10 
1  | B  | 20 
2  | C  | 30 

我想計算數量的平均值,所以..這是在「默認糧」:

AvgQty = 60/3 = 20

簡單,不過,我也那麼想刪除產品:

Order | Qty 
1  | 30 
2  | 30 

現在的數量應該重新聚集[因爲他們會用SUM(),現在我想AvgQty歸還這些線的平均...

AvgQty = 60/2 = 30

如果試圖通過順序分組明確,像這樣做:

measure := 
IF (
    ISFILTERED ('Table'[Product]), 
    AVERAGEX (
     SUMMARIZE (
      'Table', 
      'Table'[Order], 
      'Table'[Product], 
      "SumQty", SUM ('Table'[Qty]) 
     ), 
     [SumQty] 
    ), 
    AVERAGEX (
     SUMMARIZE (
      'Table', 
      'Table'[Order], 
      "SumQty", SUM ('Table'[Qty])), 
     [SumQty] 
    ) 
) 

這並不完全工作,由於總技術上沒有被過濾的產品之列,所以它繼續仍然顯示錯誤的總數...

我不確定如何覆蓋此.. ..?

我的實際計算不僅僅是一個簡單的平均值,但我面臨的主要問題是確保我可以在一個新穀物上重新計算數量......如果我能指出這一點,我可以修復我自己的問題問題..解決方案很可能也會將表格加載到訂單顆粒的模型上! ;)

+0

我不太明白這個問題,什麼是期望的結果?對於訂單+產品,僅限訂單,僅限產品和總計 –

+0

是的......我重新閱讀並且有點不清楚..讓我再說一遍!簡短的答案是我想達到'新'總量的平均數量,當時現在有兩條線I.e.產品過濾器被刪除... – m1nkeh

+0

好的,編輯..謝謝! – m1nkeh

回答

0

我也想過這最後的日子恐怕也沒有辦法解決這個,原因如下:

  • 存在DAX沒有函數返回計算整個表作爲行
  • 沒有功能,告訴你什麼是聚集有
  • 爲單排,你可以找出哪些是使用複雜的級聯ISFILTERED功能過濾,但是這是不是真的可行,也可靠
  • 最大的問題:當你在總或分總水平,有沒有辦法找出用於明細行因爲沒有像ISFILTERED,HASONEVALUE等現有功能將工作

所以DAX這不能得到解決從我的角度來看,

如果您使用MDX查詢您的模型(例如一個數據透視表),你可以創建一個MDX度量,它使用AXIS()函數返回在行/列上使用的集合,並且它在COUNT()函數中

+0

格哈德,這是一個非常好的答案,非常明確。我很高興你回來了,因爲它證實了我自己的發現,我感謝你。我正在使用(很短的時間)數據透視表來驗證我的工作,但後來切換到使用PowerBI矩陣控制,因爲我實際上是在他們正在做的「下」,我們的報告層是PowerBI。 – m1nkeh