繁体   English   中英

SSRS将一周与上一年的同一周进行比较

[英]SSRS compare week to the same week number from previous year

我正在处理从OLAP多维数据集获取其数据的SSRS报告。 在OLAP多维数据集中,我有一个名为WeekOfYear的字段,该字段根据日期为我提供了一年中的第几周。 例如,1月1日的第1周(如果1月1日是星期一)和1月8日的第2周。 我的数据按此字段分组,但现在我希望能够将一年中的这一周与一年中的前一周的数据进行比较。 就像比较2015年的第1周和2014年的第1周。无论如何,我能做到这一点吗? 感谢您的帮助。 谢谢。

有一个LookUp函数应该能够执行您需要的操作。

您提到您有一个WeekOfYear字段。 这也假设您具有Year字段(或可以使用** YEAR(Fields!YouDateField.Value)进行计算)

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

如果你实际上是总结从立方体多行数据,你需要使用LookUpSet让所有的值,并用自定义函数总结他们(因为微软不可能设想用户想总结多条记录)。 幸运的是,用户已经创建了一个函数SumLookup 如果需要,请参阅如何将组内的聚合与SSRS内的跨组聚合合并

如果您有权访问OLAP多维数据集并可以对其进行编辑,则可以在多维数据集上定义一个新的“计算度量”。 具体如何工作取决于日期层次结构的设置。 您还可以在Report Builder / Visual Studio中构建数据集时通过查询设计器访问此变量并定义计算的度量。

在多维数据集浏览器中单击鼠标右键,然后选择“新计算所得成员”。

通过多维数据集浏览器添加计算的度量

由于数字7不能很好地适合365或366,因此跨年度报告可能很困难,因此您最终总是要花52周以上的时间。 由于1月1日可能是一年的星期日,而下一年(2012/2013)可能是星期二,因此直接比较这些值并不总是一个好主意。 因此,人们可以通过针对日期日期定义一年中的7天工作周来解决此问题。 一年中可能有52周,另一年中有53周。这是一个有点题外话的地方,因此我将在此处链接进行解释 ,但是请务必注意这一点,以便在下面实施我的建议。

假设您在日期维度上有一个不错的层次结构,可以将“周”累积到“年”级别,则可以使用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本身中运行较慢的方式非常快速地提供聚合和偏移数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM