我正在使用TFS2010多维数据集中的MDX数据集(我还在Team Foundation Server上发布了 - 报告和仓库论坛)。
我希望在过去的几个月中产生老化缺陷的趋势。我有代码生成我需要的数据,因为我无法按照SSRS线图所需的方式对其进行计数。这是代码:
WITH MEMBER [Measures].[AgedGroupTotal] AS ([Measures].[Work Item Count])
MEMBER [Measures].[AgedGroup30] AS IIF(DATEDIFF("d", [Work Item].[System_CreatedDate].CurrentMember.Name, [Date].[Date].CurrentMember.Name) <= 30, [Measures].[Work Item Count], null)
MEMBER [Measures].[AgedGroup3060] AS IIF(DATEDIFF("d", [Work Item].[System_CreatedDate].CurrentMember.Name, [Date].[Date].CurrentMember.Name) > 30 AND DATEDIFF("d", [Work Item].[System_CreatedDate].CurrentMember.Name, [Date].[Date].CurrentMember.Name) <= 60, [Measures].[Work Item Count], null)
MEMBER [Measures].[AgedGroup6090] AS IIF(DATEDIFF("d", [Work Item].[System_CreatedDate].CurrentMember.Name, [Date].[Date].CurrentMember.Name) > 60 AND DATEDIFF("d", [Work Item].[System_CreatedDate].CurrentMember.Name, [Date].[Date].CurrentMember.Name) <= 90, [Measures].[Work Item Count], null)
MEMBER [Measures].[AgedGroup90] AS IIF(DATEDIFF("d", [Work Item].[System_CreatedDate].CurrentMember.Name, [Date].[Date].CurrentMember.Name) > 90, [Measures].[Work Item Count], null)
SELECT NON EMPTY { [Measures].[AgedGroup30], [Measures].[AgedGroup90], [Measures].[AgedGroup6090], [Measures].[AgedGroup3060], [Measures].[AgedGroupTotal] }
ON COLUMNS, NON EMPTY { ([Date].[Month].[Month].ALLMEMBERS *
[Date].[Week].[Week].ALLMEMBERS *
[Date].[Date].[Date].ALLMEMBERS *
[Work Item].[System_CreatedDate].[System_CreatedDate].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME
ON ROWS FROM ( SELECT ( [Date].[Date].&[2013-01-01T00:00:00] : [Date].[Date].&[2013-03-31T00:00:00] )
ON COLUMNS FROM ( SELECT ( { [Work Item].[System_State].&[Active] } )
ON COLUMNS FROM ( SELECT ( { [Work Item].[System_WorkItemType].&[Bug] } )
ON COLUMNS FROM [Work Item])))
WHERE ([Work Item].[System_WorkItemType].&[Bug], [Work Item].[System_State].&[Active])
结果如下: PIC:http://social.msdn.microsoft.com/Forums/getfile/258636
月周工作日创建日期AgedGroup30 AgedGroup90 AgedGroup6090 AgedGroup3060 AgedGroupTotal 2013年1月截至1月5日的一周1/1/2013 3/15/2012(null)2(null)(null)2 2013年1月截至1月5日的一周1/1/2013 3/21/2012(null)3(null)(null)3 2013年1月截至1月5日的一周1/1/2013 3/29/2012(null)1(null)(null)1 2013年1月截至1月5日的一周1/1/2013 3/30/2012(null)0(null)(null)0 2013年1月截至1月5日的一周1/1/2013 2012年4月3日(null)1(null)(null)1 2013年1月截至1月5日的一周1/1/2013 4/5/2012(null)5(null)(null)5 2013年1月截至1月5日的一周1/1/2013 2012年4月6日(null)10(null)(null)10 2013年1月截至1月5日的一周1/1/2013 4/12/2012(null)0(null)(null)0 2013年1月截至1月5日的一周1/1/2013 4/14/2012(null)2(null)(null)2
问题是[工作项]。[System_CreatedDate]。[System_CreatedDate] .ALLMEMBERS需要包含在结果中。如果不包含此成员,则年龄组的DATEDIFF公式不会计算并给出#Error。如果我将此数据输出到AgedGroups上带有SUM的SSRS表中,并排除创建的日期,我将得到我需要的数据集:
PIC:http://social.msdn.microsoft.com/Forums/getfile/258639
月周日期年龄组30岁年龄组3060岁年龄组6090年龄组90年龄组总数 2013年2月截至2月02日的一周2/1/2013 20 1 2 2 25 2/2/2013 20 1 2 2 25 截至2月9日的一周2/3/2013 20 1 2 2 25 2/4/2013 28 0 3 2 33 2/5/2013 37 0 3 2 42 2/6/2013 50 1 3 1 55 2/7/2013 60 1 7 3 71 2/8/2013 58 2 7 3 70 2/9/2013 58 2 7 3 70
问题是我在MDX数据集中需要这个求和结果。但是,我无法排除创建问题的创建日期。我是MDX的新手,但在SQL中,使用TEMP表和sum / group by,这个操作很简单。但是,我知道MDX不会这样工作。任何人都可以帮我弄清楚如何在MDX中获取这个数据集吗?
感谢您的帮助,
Evgapro