2015-03-31 60 views
0

我們想要顯示當前期間的銷售額與上一期間的銷售額。 要顯示前一段時間我們使用的日期dimenion表和以下計算:上一年SSAS DAX時間智能和計算結果給出錯誤值

計算方法(SalesValueGross; DATEADD(日期[日期] -1; YEAR))

不幸的是不知何故,顯示未成年人(十進制)在比較年份時的差異。 當我們切片到幾個月時,差異會變得更大。

我們有另一個問題是,這種計算似乎不(例如)1-個星期的時候工作 - 2015年1周 - 2014年

任何幫助,不勝感激!

回答

1

當我想之前歷年的銷售,我用一個公式如下所示:

Cal Prior Yr Sales:=if(HASONEVALUE('Sale Date'[Calendar Year]), 
Calculate([Total Sales], 
PREVIOUSYEAR('Sale Date'[Date])),BLANK()) 

的HASONEVALUE只是保證了只有一年選定所以它會知道正確的前一年檢索。

您可以進行一系列計算,使您可以使用一個calc來確定您所處的日期層次結構的級別(假設您的日期表中有可用的字段)。這是我以前用過的東西,財務日曆與正常日曆不同。

首先,基站計算:

Sales Same Week Prior Year:= 
CALCULATE([Total Sales],Filter(All('Sale Date'), 
'Sale Date'[Week Key] = max('Sale Date'[Same Week Last Year]))) 

Sales Same Month Prior Year:=CALCULATE([Total Sales], Filter(All('Sale Date'), 
'Sale Date'[Month Seq] = max('Sale Date'[Month Seq])-12)) 

Sales Same Quarter Prior Year:=CALCULATE([Total Sales], Filter(All('Sale Date'), 
'Sale Date'[Quarter Seq] = max('Sale Date'[Quarter Seq])-4)) 

Sales Prior Year:=CALCULATE([Total Sales], Filter(All('Sale Date'), 
'Sale Date'[Fiscal Year] = max('Sale Date'[Fiscal Year])-1)) 

您可以隱藏所有這些計算的再創造最後一次計算,讓它可見:

Sales Same Period Last Year:= 
if(HASONEVALUE('Sale Date'[Week Key]), [Sales Same Week Prior Year], 
if(HASONEVALUE('Sale Date'[Month Key]),[Sales Same Month Prior Year], 
if(HASONEVALUE('Sale Date'[Quarter Key]),[Sales Same Quarter Prior Year], 
if(HASONEVALUE('Sale Date'[Fiscal Year]), [Sales Prior Year], BLANK())))) 

您可能需要添加一對夫婦計算字段到您的日期表,使其工作。我的領域是:[去年同一週],[月份次數],[季度次數]。去年的同一周是一個整數字段,它是yyyyww。 Month Seq和Quarter Seq只是按照時間順序自動遞增整數,不再重複。 我對去年同一週的公式是

=if('Sale Date'[Week Nbr] = 53, (('Sale Date'[Fiscal Year]-1) * 100) + ([Week Nbr]-1), 
(('Sale Date'[Fiscal Year]-1) * 100) + ([Week Nbr])) 

我在SQL視圖,這是日日做源的序列號。例如,如果我的日期表在2010年1月1日開始,則2010年1月份的月份序列號爲1,2011年1月份的月份序列號爲13。2010年Q1的季度序列號爲1,2012年第一季度的季度序列號爲9.

http://www.daxpatterns.com/time-patterns/是一個很好的閱讀本主題。