2012-03-15 24 views
2

我想写一些针对TFS多维数据集的报告。我想利用查询生成器,因为我对MDX相当陌生,我不想写整个查询;但是,将MDX注入查询设计器的维度过滤器表达式似乎并不容易。有没有特别的语法来输入它们?报表生成器:MDX筛选器表达式如何在查询设计器中工作?

例如,假设我要显示在某一特定日期范围内前10名最重的代码改动日期。在查询设计器中:

  • 我放入日期维度并将其标记为参数。
  • 我滴在版本控制变更集,设置层次结构变更集标识,运营商MDX。
  • 然后我使用过滤器表达式构建器来构造TOPCOUNT([Version Control Changeset].[Changeset ID], 10, [Measures].[Total Churn])
  • 回到查询设计器中,我将Date,Changeset ID和Total Churn设置为我的列。

生成的查询如下:

SELECT NON EMPTY { [Measures].[Total Churn] } ON COLUMNS, NON EMPTY { ([Date].[Date].[Date].ALLMEMBERS * [Version Control Changeset].[Changeset ID].[Changeset ID].ALLMEMBERS) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM (SELECT (TOPCOUNT([Version Control Changeset].[Changeset ID], 10, [Measures].[Total Churn])) ON COLUMNS FROM (SELECT (STRTOSET(@DateYearMonthDateHierarchy, CONSTRAINED)) ON COLUMNS FROM [Code Churn])) WHERE (IIF(STRTOSET(@DateYearMonthDateHierarchy, CONSTRAINED).Count = 1, STRTOSET(@DateYearMonthDateHierarchy, CONSTRAINED), [Date].[Year - Month - Date Hierarchy].currentmember)) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

然而,无论是在查询设计器的预览区域,当我运行报表,就好像没有被应用,而不是TOPCOUNT看到前10名,我看到他们全部。表达式解析正确;它似乎没有做任何事情。有没有我错过的简单问题?

谢谢!

回答

2

根据你的目标... 显示排名前10位最重的代码改动日期在特定日期范围

我觉得你的MDX表达式是错误的...

TOPCOUNT([Version Control Changeset].[Changeset ID], 10, [Measures].[Total Churn]) 

试试这个而是......

TOPCOUNT(
    ( 
     [Date].[Date].[Date].ALLMEMBERS * 
     [Version Control Changeset].[Changeset ID] 
    ) 
    ,10 
    ,[Measures].[Total Churn] 
) 

...此外,我发现this utility时非常有用,与MDX工作产生从MS综合查询designe RS。

+0

工作就像一个魅力。谢谢! – bwerks 2012-03-19 23:04:00