2014-09-03 127 views
1

我已經有了一個MDX查詢,該查詢返回使用計算所得成員的Month Hierarchy中的天數。我需要做的是添加新的計算成員,返回週末(週六和週日)以外的天數。MDX:計算排除週末的天數

下面是一個使用的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 | 
+----------------+-------------+--------------------------------+ 

回答

3

標準的解決方案,這在每週的星期幾(星期一,...星期日),您的時間維度上有一個層次結構。一旦你爲此,你可以直接使用這些成員過濾。你甚至可以在週末/沒有周末的情況下做一個層次結構。最好的解決方案取決於您在架構中採取的措施,最好的解決方案始終使用標準的MDX聚合,並避免在一組成員上使用SUM/COUNT。

其他解決方案可能取決於您如何實施您的層次結構,您可以使用Weekdayfilter函數。


老實說有點像,我還沒有檢查它

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

這是日期維度http://goo.gl/NjTJQ9目前的結構。它已經有[日期]。[日期名稱]屬性,其中成員星期日到星期六。我可以用它來實現預期的輸出嗎? – ggarcia 2014-09-03 12:55:37

+0

更改了答案... – ic3 2014-09-03 13:31:36

+0

非常感謝您的幫助。 我修改了一下你的代碼,這解決了我的問題:)。 (日期)。[日曆],[日期]。[日曆]。[日期]),星期日期([日期]。[日曆] .CurrentMember.Member_CAPTION,2)<= 5) – ggarcia 2014-09-03 13:53:01