2016-11-10 77 views
0

我正在尝试编写MDX查询以返回有关调查问题的一些信息。我希望在我的结果中获得平均回复和总回复。我有两种类型的问题。一类问题只有一个答案。另一类问题可以有多个答案(选择所有适用的答案)。每个问题都与问题ID和答复者ID相关联。下面的查询工作(有点)如何获得SSAS MDX查询中的不同维度值的计数

Select NON EMPTY 
    { 
    [Measures].[Average Response], [Measures].[Total Count] 
    } ON 0 
, NON EMPTY 
    { 
    ([Question].[Question ID].[Question ID].ALLMEMBERS) 
    } ON 1 
From [Cube] 

平均响应是从单反应和多个响应(两个不同的事实表)的组合。总数也是这两个表的组合。问题是,对于单个回答问题,我只能计算回答者的数量。对于多重回答问题,由于我的答案比我参加问卷调查的人多,因此这些问题会下降。我真的很想知道有多少人提供了答案。要做到这一点,我认为我需要不同数量的受访者ID。所以我试着改变我的第一轴。

[Measures].[Average Response], [Measures].[Total Count], DISTINCTCOUNT([Respondent].[Respondent ID]) 

那么,这是行不通的,我真的没有想到它。我得到了“该函数需要3个参数的元组表达式,使用了字符串或数字表达式。”这正在迅速成为我最喜欢的SSAS错误消息。我仍然是绿色的,我想我仍然在思考SQL。如何在同一查询中获得平均响应和不同维度值的计数。顺便说一句,我的查询确实有一个切片机,如果需要,我可以提供,但我不认为它是相关的,因为我在切片机或不切片机的情况下得到相同的问题。

回答

0

使用MDX DistinctCount函数时,它返回给定数据集中不同的非空元组的数量。也许尝试做这样

DistinctCount({[Respondent].[Respondent ID].members * [Measures].[Total Count]})

这样的东西你与数据集(例如{...})工作的方式。

如果您使用的是较大的一组数据,那么您可能需要考虑创建一个Distinct Count度量。 DistinctCount函数本身是SSAS公式引擎查询,而使用Distinct Count measure则允许Analysis Services同时使用存储引擎和公式引擎。欲了解更多信息,请参阅Analysis Services Distinct Count Optimization

+0

我尝试了你所说的,并且得到了我最喜欢的消息_“该函数需要1个参数的元组集合表达式,使用了一个字符串或数字表达式。”_另外,如果我尝试将它与平均值一起使用我得到_“成员,元组或集合必须在函数中使用相同的层次结构。”令人沮丧的部分是我确切知道如何在SQL中执行此操作。 –

+0

我可以同情 - 我对MDX本人仍然很不好,现在已经在做SSAS了;-)。说到这一点,当你运行'distinctcount'函数时,当你手动创建一个集合时会发生什么,例如'答复者] [答卷人ID],[Q1],[答辩人]。[答辩人身份证号码]。[Q2],[答辩人]。[答辩人身份证号码]。[Q3]}' '(根据情况更新问题成员)并查看是否可以收到回复? –

相关问题