TFS2010 キューブから MDX データセットを作成しています (Team Foundation Server - Reporting & Warehouse フォーラムにも投稿しました)。
ここ数か月の経年劣化の傾向を調べています。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 月 5 日終了の週 2013 年 1 月 1 日 2012 年 3 月 15 日 (null) 2 (null) (null) 2 2013 年 1 月 5 日終了の週 2013 年 1 月 1 日3/21/2012 (null) 3 (null) (null) 3 2013 年 1 月に終了する週 05 1/1/2013 3/29/2012 (null) 1 (null) (null) 1 2013 年 1 月に終了する週05 1/1/2013 3/30/2012 (null) 0 (null) (null) 0 2013 年 1 月 1 月に終了する週 05 1/1/2013 4/3/2012 (null) 1 (null) (null) 1 2013 年 1 月 1 月 5 日に終了する週 2013 年 1 月 1 日 2012 年 4 月 5 日 (ヌル) 5 (ヌル) (ヌル) 5 2013 年 1 月 5 日に終了する週 2013 年 1 月 1 日 2012 年 4 月 6 日 (ヌル) 10 ( null) (null) 1月10日2013 年 1 月 5 日に終了する週 2013 年 1 月 1 日 2012 年 4 月 12 日 (ヌル) 0 (ヌル) (ヌル) 0 2013 年 1 月 5 日に終了する週 2013 年 1 月 1 日 2012 年 4 月 14 日 (ヌル) 2 (ヌル) (ヌル) 2
問題は、[Work Item].[System_CreatedDate].[System_CreatedDate].ALLMEMBERS を結果に含める必要があることです。このメンバーが含まれていないと、年齢グループの DATEDIFF 式は計算されず、#Error が返されます。このデータを AgedGroups の SUM を使用して SSRS テーブルに出力し、作成日を除外すると、必要なデータ セットが得られます。
PIC: http://social.msdn.microsoft.com/Forums/getfile/258639
月 週 日付 Aged Group30 Aged Group3060 Aged Group6090 Aged Group90 AgedGroupTotal 2013 年 2 月 2 月に終了する週 2013 年 2 月 1 日 20 1 2 2 25 2/2/2013 20 1 2 2 25 2 2 25 2013 年 2 月 4 日 28 0 3 2 33 2013 年 2 月 5 日 37 0 3 2 42 2013 年 2 月 6 日 50 1 3 1 55 2013 年 2 月 7 日 60 1 7 3 71 2013 年 2 月 8 日 58 2 7 3 70 2013 年 2 月 9 日 58 2 7 3 70
問題は、MDX データセットでこの合計結果が必要なことです。ただし、作成日を除外できないため、問題が発生します。私は MDX を初めて使用しますが、SQL では、TEMP テーブルと合計/グループ化を使用すると、この操作は簡単になります。ただし、MDX がこのように機能しないことはわかっています。このデータセットを MDX で取得する方法を教えてくれる人はいますか?
助けてくれてありがとう、
エフガプロ