我正在尝试针对 TFS 多维数据集编写一些报告。我想使用查询生成器,因为我对 MDX 相当陌生,并且我不想编写整个查询;但是,将 MDX 注入(inject)查询设计器的维度过滤表达式似乎并不容易。有特殊的语法来输入它们吗?
例如,假设我想显示特定日期范围内前 10 个最严重的代码流失日期。在查询设计器中:
- 我放入日期维度并将其标记为参数。
- 我放入版本控制变更集,将层次结构设置为变更集 Id,将运算符设置为 MDX。
- 然后,我使用过滤表达式生成器构建
TOPCOUNT([Version Control Changeset].[Changeset ID], 10, [Measures].[Total Churn])
- 返回查询设计器,我将“日期”、“变更集 ID”和“总改动量”设置为我的列。
生成的查询如下:
SELECT NON EMPTY { [测量].[总流失率] } ON COLUMNS, NON EMPTY { ([日期].[日期].[日期].ALLMEMBERS * [版本控制变更集].[变更集 ID] .[变更集 ID].ALLMEMBERS ) } 维度属性 MEMBER_CAPTION、MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( TOPCOUNT([版本控制变更集].[变更集 ID], 10, [Measures].[Total Churn]) ) ON COLUMNS FROM ( SELECT ( STRTOSET(@DateYearMonthDateHierarchy, CONSTRAINED) ) ON 来自 [代码改动])) WHERE ( IIF( STRTOSET(@DateYearMonthDateHierarchy, CONSTRAINED).Count = 1, STRTOSET(@DateYearMonthDateHierarchy, CONSTRAINED), [日期].[年 - 月- 日期层次结构].currentmember ) ) 单元格属性值、BACK_COLOR、FORE_COLOR、FORMATTED_VALUE、FORMAT_STRING、FONT_NAME、FONT_SIZE、FONT_FLAGS
但是,在查询设计器的预览区域中以及当我运行报表时,就好像未应用 TOPCOUNT,我看到的不是前 10 名,而是全部。表达式解析正确;它似乎什么也没做。有没有我错过的简单问题?
谢谢!
最佳答案
根据您的目标...显示特定日期范围内前 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在使用 MS 集成查询设计器生成的 MDX 时非常有用。
关于tfs - 报告生成器 : How do MDX filter expressions work in Query Designer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728463/