2

我正在尝试针对 TFS 多维数据集编写一些报告。我想使用查询生成器,因为我对 MDX 还很陌生,我不想编写整个查询;但是,将 MDX 注入到查询设计器的维度过滤器表达式中似乎并不容易。是否有特殊的语法可以输入它们?

例如,假设我想在某个日期范围内显示前 10 个最重的代码流失日期。在查询设计器中:

  • 我放入一个日期维度并将其标记为参数。
  • 我放入版本控制变更集,将层次结构设置为变更集 ID,将运算符设置为 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 个,而是看到了所有这些。表达式解析正确;它似乎什么也没做。我错过了一个简单的问题吗?

谢谢!

4

1 回答 1

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]
)

...另外,我发现这个实用程序在使用从 MS 集成查询设计器生成的 MDX 时非常有用。

于 2012-03-16T17:34:41.007 回答