2014-01-07 101 views
1

正確我有一個基本的數據一噸的切片機,大約是這樣的設置:計算字段總計不PowerPivot的

 Hours SpreadPerHr  Spread 
     5.00  5.00   25.00 
     10.00  2.00   20.00 
     8.00  10.00   80.00 

凡傳播是一個計算值,其中價差=小時* SpreadPerHour。問題是,這些列的總數遵循這個公式了,所以它看起來像這樣:

 Hours SpreadPerHr  Spread 
     5.00  5.00   25.00 
     10.00  2.00   20.00 
     8.00  10.00   80.00 
Total: 23.00  17.00   391.00 

而且,儘管小時累計起來就好了,SpreadPerHour是動態的,因此價差爲好。說總傳播=總時數*總傳播時間是不正確的。彩民應該是:

Total: 23.00  17.00   125.00 

有沒有辦法,我可以使Excel請假彙總數據的時間原樣,但總和傳播列,而不是乘以總數的?

回答

2

以下是我認爲你必須在你的力量支點型號: enter image description here

您有價差計算的措施,這是我標記SpreadCalc1。問題在於它在進行乘法之前進行聚合。您需要逐行完成此操作,然後進行彙總。因此,而不是計算的度量,您需要創建一個計算列,然後求和該列。

enter image description here

我已經標記爲SpreadCalc具有式=[Hours] * [SpreadPerHr]。 我稱爲Spread的計算度量僅爲Sum([SpreadCalc])。你可以在那裏看到總數是125,而不是391.

+0

這看起來對的,但我不明白的區別。我的傳播(這是[小時] * [SpreadPerHr])本身是一個計算的度量,它在原始數據中不存在,它是我在PowerPivot中創建的一個字段。我可以爲sum([Spread])創建一個新的度量標準,但它會出錯。我錯過了什麼嗎? –

+2

傳播領域不在我原來的數據集。您必須在Power Pivot表上添加計算的字段,而不是作爲計算的度量值,而是作爲[計算的列](http://office.microsoft.com/en-us/excel-help/create-a-calculated-列在功率-樞軸HA102918362.aspx)。然後改變你的計算度量來總結新的列,它會起作用。以下是關於何時使用計算列與計算度量的[良好文章](http://www.powerpivotpro.com/2013/02/when-to-use-measures-vs-calc-columns/)。 – mmarie

+0

啊,謝謝!這真的澄清了它。我感謝您的幫助! –

1

我知道這可能有點多餘,但我會建議一個稍微不同的方法。

在「小」表中添加計算列很好,但它可能會導致大型數據庫出現嚴重的性能問題。

所以要解決您的問題,我相信「正確」的方法是使用SUMX函數。

它專門爲每一行計算表達式,這正是您所需要的。只要性能不變(無需添加計算列或執行任何源數據操作),它就非常智能。

如果你使用這個公式(更正表/措施的名字),你應該得到想要的結果:

SUMX(YourTable, [Sum Hour] * [Sum SpreadPerHr]) 

enter image description here

+1

我通常讀到你想[避免SUMX](http://www.powerpivotblog.nl/tune-your-powerpivot-dax-query-dont-use-the-entire-table-in-a-filter-and -replace-sumx-if-possible /),因爲性能問題,但[此博客文章](http://sqlblog.com/blogs/alberto_ferrari/archive/2011/10/26/sum-or-sumx-with-簡單中間計算sumx-is-the-way-to-go.aspx)似乎證實了你對簡單計算所說的話。感謝您指出了這一點。我認爲在這種情況下性能差異可以忽略不計,但我很欣賞這些新知識。 – mmarie

+0

感謝您的文章,將有一個看看他們。 –

+0

這工作也很好。這似乎也更直接一點。感謝您的輸入! –