我正在尝试在TFS多维数据集上创建一个MDX查询,该查询获取Estimate字段的历史值。对于每个任务,我想获得设置Estimate字段的每个人的最后估计。例如,如果Bob项目经理将估计设置为24小时,然后开发人员将Dave设置为32小时,我想创建一个查询,显示每个估计值与实际工作时间的差异[工作完成]。 / p>
我遇到的问题是TFS中的工作项的历史值是用revs(修订版)跟踪的,但是TFS会将一个正值和负值放在一个转换中,用于更改的工作项。这使得总和看起来像0 /空单元格。
例如,Bob将估计值设置为转速为2的24。然后Dave将其设置为转速为32的TFS。对于转速2,TFS将另一行添加到-24的数据仓库中。当此卷起时,我看不到鲍勃的估计。
如何仅选择正值?我尝试使用过滤器函数,这将返回正确的成员,但单元格的值仍为空
with
member [Last Estimate] as [Measures].[Microsoft_VSTS_CMMI_Estimate]
SELECT
{nonempty([Changed By].[Person].[All].Children*[Last Estimate])} ON 0,
{nonempty([Work Item].[System_Id].[System_Id]*Filter([Work Item].[System_Rev].[All].Children, [Measures].[Microsoft_VSTS_CMMI_Estimate] > 0))} ON 1
FROM [Work Item History]
WHERE [Team Project].[Team Project].&[29];
以下是结果
Work rev Bob Dave
Item Last Estimate Last Estimate
7446 2 (null) (null)
7446 3 (null) 32.0
每一行都应该为两个人之一的值。
提前致谢!
答案 0 :(得分:1)
过滤器函数过滤维度的成员,但这还不够,因为成员可以包含例如24和-24。尝试使用Iif函数过滤度量本身:
with
member [Last Estimate] as
'
Iif([Measures].[Microsoft_VSTS_CMMI_Estimate] > 0, [Measures].[Microsoft_VSTS_CMMI_Estimate], 0)
'
SELECT
{nonempty([Changed By].[Person].[All].Children*[Last Estimate])} ON 0,
{nonempty([Work Item].[System_Id].[System_Id]*Filter([Work Item].[System_Rev].[All].Children, [Measures].[Microsoft_VSTS_CMMI_Estimate] > 0))} ON 1
FROM [Work Item History]
WHERE [Team Project].[Team Project].&[29];