MDX:计算不包括周末的天数

时间:2014-09-03 11:04:16

标签: ssas mdx

我已经有一个MDX查询,它使用计算成员返回Month Hierarchy中的天数。我需要做的是添加新的计算成员,该成员返回不包括周末(周六和周日)的天数。

以下是我使用Adventure Works DW 2008R2 SE的现有MDX查询

WITH 
  MEMBER [Measures].[Num of Days] AS
    COUNT ( 
      Descendants ( [Date].[Calendar],  [Date].[Calendar].[Date]) 
    )

SELECT 
  { [Measures].[Num of Days] } ON COLUMNS,  
  [Date].[Calendar].[Month].ALLMEMBERS ON ROWS
FROM [Adventure Works]

示例现有输出:

+----------------+-------------+
|   Month Year   | Num of Days |
+----------------+-------------+
| July 2005      |          31 |
| August 2005    |          31 |
| September 2005 |          30 |
+----------------+-------------+

预期输出样本:

+----------------+-------------+--------------------------------+
|   Month Year   | Num of Days | Num of Days Excluding Weekends |
+----------------+-------------+--------------------------------+
| July 2005      |          31 |                             21 |
| August 2005    |          31 |                             23 |
| September 2005 |          30 |                             22 |
+----------------+-------------+--------------------------------+

1 个答案:

答案 0 :(得分:3)

此标准解决方案是在时间维度中包含一周中的日期(星期一,...星期日)。一旦你这样做,你可以直接使用这些成员过滤。您甚至可以在周末/周末进行层次结构。最佳解决方案取决于您在架构中采取的措施,最好的方法是使用标准MDX聚合并避免在一组成员上使用SUM / COUNT。

其他解决方案可能取决于您实施层次结构的方式,您可以使用Weekdayfilter功能。


老实说,我还没检查过

 Count(  FILTER( Descendants ( [Date].[Calendar],  [Date].[Calendar].[Date]) ,  WeekDay( [Date].[Calendar].currentmember.properties("KEY"), 2) <= 5 ) )