我们正在尝试报告反馈分数。我需要计算有多少人达到分数> 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]
)
这对修改我的第一个查询有帮助吗?
答案 0 :(得分:0)
如果没有可用的多维数据集架构,很难回答。但是,听起来您正在尝试在聚合后进行行级别计算,这会导致您尝试查找将导致叶级数据用于计算的维度组合。即使可能,这些也总是表现不佳。
我建议将此计算推送到基础数据库,并使用带状值{[1-5],[6-7]}生成其他维度。
另外,您没有提及此Analysis Services(或其他供应商)多维或表格 - 如果表格只是为"超过5"在多维数据集中,并将其用作新的维度成员。