2015-04-21 72 views
0

我正在研究從OLAP多維數據集獲取其數據的SSRS報表。在OLAP多維數據集中,我有一個名爲WeekOfYear的字段,該字段給出了基於日期的年份的星期數。例如,1月1日的第1周(如果1月1日是週一)和1月8日的第2周。我的數據按該字段分組,但現在我希望能夠比較一年中的本週和上一年的一週中的數據。就像比較2015年的第1周到2014年的第1周。是否有我能做到的呢?我感謝任何幫助。謝謝。SSRS比較周與前一年的同一週數

+0

您的OLAP多維數據集是使用SSAS構建的嗎?您在報告中試圖完成此任務而不是在您的多維數據集中定義計算指標的原因? – GShenanigan

+0

你可以向我解釋如何做GShenanigan? – user3294748

回答

0

有一個LookUp函數應該能夠做你需要的。

你提到你有一個WeekOfYear字段。這還假定你有一個場(或者可以用** YEAR(領域!YouDateField.Value)計算的話)

=LookUp(Fields!YourYearField.Value - 1 & "|" & Fields!WeekOfYear.Value, Fields!YourYearField.Value & "|" & Fields!WeekOfYear.Value, Fields!YourValueField.Value, "YourDataSet") 

如果你實際上是從你的立方體總結多行數據,您需要使用LookUpSet獲取所有值並將它們與自定義函數相加(因爲Microsoft不可能設想用戶想要SUM多個記錄)。幸運的是,用戶已經創建了一個功能 - SumLookup。如果需要,請參閱How to combine aggregates within a group with aggregates across groups within SSRS

+0

嗨漢諾威,我還沒有得到它。我的報告按商店分組,我有一個按年份和星期分組的列組。我正在嘗試在其旁邊的另一個年份組中獲得一週,但是按前一年的同一週數進行分組。任何想法如何做到這一點? – user3294748

0

如果您有權訪問OLAP多維數據集並可以對其進行編輯,則可以在多維數據集上定義一個新的計算度量。這將如何工作取決於您的日期層次結構的設置。您還可以在報表構建器/ Visual Studio中構建數據集時通過查詢設計器訪問此項並定義計算度量值。

右鍵單擊多維數據集瀏覽器並選擇「新計算成員」。

Add a calculated measure through the cube browser

跨年報告對周可能是困難的,由於這樣的事實,7號不適合整齊地成365或366,所以你總是有一點結束了52周。由於1月1日可能是一個星期日的一年,下一個星期二(2012/2013),直接比較這些並不總是一個好主意。所以人們可以通過定義一年中的7天周與他們的日期維度來解決這個問題。一年你可能有52個星期,另一個你有53個。這是一個小題目,所以我將鏈接到一個explanation of this here,但重要的是要意識到這一點,以實施我的建議。

假設您的日期維度上有一個很好的層次結構,可以將Weeks集合到Year級別,則可以使用ParallelPeriod函數在您的多維數據集中創建一個新度量。

[Measures].[SalesSPLY] AS 
    (
     ParallelPeriod 
     (
      [Dim Date].[ReportingCalendar].[ReportingYear], 
      1, 
      [Dim Date].[ReportingCalendar].CurrentMember 
     ), 
     [Measures].[Sales] 
    ) 

我的例子MDX假定你已經有了一個層次叫ReportingCalendar您的日期維度創建。你的名字可能會有所不同。

現在,如果您瀏覽多維數據集並選擇WeekOfYear,Sales和SalesSPLY,那麼您將在今年的第1周以及去年的數據中看到您的價值。

OLAP立方體非常擅長這種類型的基於時間的智能,因爲它們可以以在RDBMS中或SSRS本身內運行速度較慢的方式快速提供聚合和偏移數據。

+0

我試過了,但我得到的是空值。任何想法可能是什麼? – user3294748

+0

這可能是由於日期維度中層次結構的設置所致。如果您的周和年屬性之間沒有自然聯繫,那麼它將無法跳回一年。我的答案中的鏈接提供瞭如何設置層次結構以使用新的「ReportingYear」類型屬性的解釋。 – GShenanigan