DAX:如何计算与另一行相关的行?

时间:2015-03-17 01:53:53

标签: dax

成为dax的新手,我在制定问题和解决问题答案对的行数时遇到了问题。

一般情景是一个表格式双模型,它模拟具有问题和答案配对的调查,其中1个问题可能有1到N个响应选项。事实表的关键数据是Respondent,Response。该表引用了一个“问题答案”表,其中包含答案详细信息,其中答案是显着数据。该表依次引用问题表,其中包含有关该问题的信息。

我正在尝试解决表单的查询,有多少人回答问题X,但是没有回答问题Y?换句话说,在回答问题1的人中,有多少人没有回答问题12?

如果没有回答问题,则事实表中的问题回复没有行。

我一直在尝试为事实表,Survey Response创建一个度量,并且相信它需要一些Calculate()操作。 http://msbiacademy.com/?p=3491的视频有一些有希望的线索,但我不能完全克服驼峰,部分原因是它为产品子类别创建了一个重复的表格,我不确定是否通过两次导入表格,因为它使用UserRelationship。所以也许在我的情况下,我会两次导入问题,但这没有意义。我没有使用切片器,所以这可能是差异的一部分。

该措施主要针对顶级实体调查。

环境与2013年表格bi模型,sql server 2012,excel 2013。

1 个答案:

答案 0 :(得分:0)

首先计算事实表中所有答案的基本指标。

NumAnswers :=
COUNTROWS ( FactResponse )

其次,计算QuestionID答案的明确指标1.您可以使用与断开连接的切片器绑定的度量替换硬编码度量,以选择特定问题X.

Q1Answers :=
CALCULATE ( [NumAnswers], Questions[QuestonID] = 1 )

最后,由那些没有回答问题3的人过滤这部分人(或者再次使用断开连接的切片器测量来选择问题Y)。

DidntAnswerQ3 :=
CALCULATE (
    [Q1Answers],
    FILTER (
        VALUES ( Respondent[RespondentID] ),
        CALCULATE ( [NumAnswers], Questions[QuestonID] = 3 )
            = 0
    )
)