明确计算符合特定标准的测量结果

时间:2014-02-06 15:32:06

标签: ssas mdx

我们正在尝试报告反馈分数。我需要计算有多少人达到分数> 5来计算绩效%年龄。我遇到的问题是我的会员有多个可用的分数,这些分数汇总在我的结果中。

这是我到目前为止所做的:

with
MEMBER [Client Sat Score] AS ([Measures].[Avg_Score], Linkmember([Bill Period].[Fiscal].[Fiscal Period].&[201409],[Date].[Fiscal]),[Bill Period].[Fiscal].[All],[Time Slice].[KeyTimeSlice].[12M])

MEMBER [Sum Scores] AS([Measures].[Sum of Scores], Linkmember([Bill Period].[Fiscal].[Fiscal Period].&[201409],[Date].[Fiscal]),[Bill Period].[Fiscal].[All],[Time Slice].[KeyTimeSlice].[12M])

MEMBER [Number Scores] AS([Measures].[Number of Scores], Linkmember([Bill Period].[Fiscal].[Fiscal Period].&[201409],[Date].[Fiscal]),[Bill Period].[Fiscal].[All],[Time Slice].[KeyTimeSlice].[12M])

MEMBER [Over 5] As IIF([Client Sat Score]>5,1,NULL)

MEMBER [Scores Over 5] As SUM([Matter].[KeyMatterNumber].[KeyMatterNumber].members,[Over 5])

MEMBER [Percent 6 or 7s] As IIF([Number Scores]=0,NULL,[Scores Over 5] / [Number Scores])


select {[Client Sat Score],[Sum Scores],[Number Scores],[Over 5],[Scores Over 5],[Percent 6 or 7s] }
on columns,

non empty ({[Client].[KeyClientRelatedID].&[XXX] })
on rows

from [Cube]

对于“5分以上的分数”,这将返回4,但其中一个成员实际上有2分7分。这些分数在不同的日期键上,但我无法阻止它们在SUM中聚合。

有任何建议/意见吗?

编辑:

我发现如果我执行以下操作,我会得到5个单独的结果,每个结果的得分都高于5:

select {[Measures].[Avg_Score] }
on columns,

non empty ({[Matter].[KeyMatterNumber].[KeyMatterNumber].members })*
{[Date].[KeyDate].[KeyDate].&[20130206]:[Date].[KeyDate].[KeyDate].&[20140206]}
on rows

from [Cube]
where (
[Client].[KeyClientRelatedID].&[XXXX]
)

这对修改我的第一个查询有帮助吗?

1 个答案:

答案 0 :(得分:0)

如果没有可用的多维数据集架构,很难回答。但是,听起来您正在尝试在聚合后进行行级别计算,这会导致您尝试查找将导致叶级数据用于计算的维度组合。即使可能,这些也总是表现不佳。

我建议将此计算推送到基础数据库,并使用带状值{[1-5],[6-7]}生成其他维度。

另外,您没有提及此Analysis Services(或其他供应商)多维或表格 - 如果表格只是为"超过5"在多维数据集中,并将其用作新的维度成员。