MDX上周日和周六

时间:2014-03-19 16:46:05

标签: reporting-services ssas mdx

我在SSAS 2005多维数据集上构建了一份SSRS 2005报告。该报告具有“时间”维度的开始日期和结束日期参数。我需要将默认值设置为上周日和上周六。 (财政周是从周日到周六)

E.g。

开始日期:[时间]。[日]。& [20140309] 结束日期:[时间]。[日]。& [20140315]

我该如何动态完成?我的意思是本周高于日期,但下周应该是3月16日,3月22日。我知道如何在T-SQL中执行此操作,这将涉及系统日期的一些计算,但MDX?

1 个答案:

答案 0 :(得分:1)

您可以使用一些VBA Date functions available in MDX

StrToMember('[Time].[Day].&['
            + Format(DateAdd('d', - DatePart('w', Now(), 1), Now()), 'yyyyMMdd')
            + ']'
           )

应该在今天之前的最后一个星期六给你,

StrToMember('[Time].[Day].&['
            + Format(DateAdd('d', - DatePart('w', Now(), 1) - 6, Now()), 'yyyyMMdd')
            + ']'
           )

之前的最后一个星期天。

DateAdd('d', ...)的第二个参数是要添加的天数。由于这是负面的,我们会在很多天回到过去。 DatePart('w', ...)返回工作日编号(星期日= 1,星期一= 2,...)。因此,如果你减去"工作日数字"从今天起,幸运的是你已经在上周六了。再减去六天,你会在那之前的最后一个星期天到达。