2010-04-15 46 views
1

我在基於SSAS 2005多維數據集的Reporting Services 2005中構建報表。該報告的基本思想是,他們希望看到本財年迄今爲止的銷售額與去年銷售年度的銷售額。這聽起來很簡單,但因爲這是我第一個基於SSAS的「真實」報告,所以我有一段時間。使用MDX從層次結構中獲取當前會計年度

首先,如何計算當前會計年度,季度或月份。我有一個包含所有信息的會計日期層次結構,但我不知道該怎麼說:「根據今天的日期,找到當前的會計年度,季度和月份。」

我的第二個問題是稍微小一點的問題,就是去年的銷售額與今年的銷售額相比。我已經看到了很多關於如何操作的例子,但他們都假設你手動選擇了日期。由於這是一份報告,並且會自行運行,所以我需要一種將「當前」會計年度,季度和月份插入到PERIODSTODATE或PARALLELPERIOD函數中以獲得所需內容的方法。

所以,我求求你的幫助。

回答

0

您可能需要手動修改SSRS MDX才能執行此操作。它有可能獲得SSAS使用「今天」,它通常是作爲做的東西像這樣:

WITH 
MEMBER [Today] 
AS { 
StrToMember("[Date].[Date Key].&[" + Format(now(), "yyyyMMdd") + "]") 
} 


SELECT 
    [Measures].[Some Measure] 
ON COLUMNS 
FROM  
    [Cube] 
WHERE 
    {[Today]} 

你需要改變,以適應當然你自己的立方體結構。

那麼,鑑於你有會計年度,並且你想插入價值,修改上面的適合?把一個字符串放在一起,就像我向你展示的那樣,等同於你想要使用的值。聽起來你在那之後還好嗎?

0

我知道這是一個「位」太晚了,但人們在到達這個問題的頁面,這可能幫助:

IIF(Month(Now()) > MonthOffSetNumber, Year(Now()) + 1,Year(Now())) 

這是獲取當前會計年度。這將應用於這樣的事情:

SET CurrentFiscalYear AS 
(
    StrToSet("[Dim Date Name].[Fiscal Year].&[" + Format(IIF(Month(Now()) > MonthOffSetNumber, Year(Now()) + 1,Year(Now()))) + "]") 
) 

這將有助於稍後交叉連接查詢。

0

我們通過使用參數找到了一個簡單的方法來使會計期間到達日期的mdx。想象一下,我們有BeginDate(2014年4月1日)和EndDate(31/03/2015)。這是配方。在報告數據點擊參數「BEGINDATE」 - 右鍵參數 - 指定值 - 增加表達式的值:

=DATEADD 
("M" 
,IIF(Month(Today())<4 
,-Month(Today())-8 
,-Month(Today())+4 
) 
,DATEADD("D",0-DATEPART("D",Today())+1,Today())) 

執行相同的第二個參數「結束日期」,並設置Defualt值 - 指定值,並添加表達式的值:

=DATEADD("D",-1,DATEADD("M",12,DATEADD 
("M" 
,IIF(Month(Today())<4 
,-Month(Today())-8 
,-Month(Today())+4 
) 
,DATEADD("D",0-DATEPART("D",Today())+1,Today())))) 

現在您的ssrs報告將具有會計期間作爲默認期間。 Moise Kabongo