根据子问题中“是”的次数计算问题分数

时间:2019-02-19 20:37:38

标签: powerbi dax powerbi-desktop

我有一张表格,其中包含从SQL数据库加载到Power BI中的调查问题和答案。

调查中总共有10个问题。 (此数字是固定的)。

在每个问题下,都有附加的项目列表,并且该项目列表在完成的不同调查之间也不同。

例如,对于完成了调查ID A1(用于区分已完成的不同调查的调查ID)的调查,有5个项目要求Q1,而调查ID A2有3个项目要求Q1。

对于我们询问的每个项目,都有一些子问题,而子问题的答案应该为是或否。我创建了一个评分系统,以查看每个项目下每个子问题的答案-只有在每个项目下我对每个子问题的答案为是时,我才会获得评分。

在同一问题组下,子问题的数量将相同。

例如,我在每个调查中询问的每个项目在Q1下总是存在3个子问题,而在我在每个调查中询问的每个项目在Q2下总是存在2个子问题,无论我问多少个问题在不同的调查中。

调查数据示例:

| Survey ID | Question | Item | Sub Question | Answer |
|-----------|----------|------|--------------|--------|
| A1        | Q1       | X    | q1           | Yes    |
| A1        | Q1       | X    | q2           | No     |
| A1        | Q1       | X    | q3           | No     |
| A1        | Q1       | Y    | q1           | Yes    |
| A1        | Q1       | Y    | q2           | Yes    |
| A1        | Q1       | Y    | q3           | Yes    |
| A1        | Q2       | X    | q1           | No     |
| A1        | Q2       | X    | q2           | No     |
| A1        | Q2       | Y    | q1           | Yes    |
| A1        | Q2       | Y    | q2           | Yes    |
| A2        | Q1       | X    | q1           | Yes    |
| A2        | Q1       | X    | q2           | Yes    |
| A2        | Q1       | X    | q3           | Yes    |
| A2        | Q2       | Y    | q1           | No     |
| A2        | Q2       | Y    | q2           | Yes    |

上面是我从数据库加载的数据的示例。

编辑:有些问题没有附加项目列表。对这些问题的回答选项将为“是”或“否”。对于这些问题,如果答案为“是”,我将获得满分,如果答案为“否”,我将获得满分。

enter image description here

假设Q1和Q2都值10分。

每个调查的分数应为:

调查A1:对于Q1,我得到5分。对于项目X,我在3个子问题中得到1是,因此不计入;对于项目Y,我从3个子问题中得到3个是,因此很重要。我从2个项目中获得1个项目的评分,从而在10个项目中获得5分。

类似地,对于第二季度,我没有获得项目X的标记,但是获得了项目Y的标记,因此对于第二季度我获得了5分。

因此,我对调查A1的总得分是20分中的10分。

调查A2:基于相同的逻辑,我在20分中得到10分。

有人可以建议一种构造公式/新表的方法来实现我的目标吗?

我的逻辑是根据加载的当前数据创建一个新表。

Example table

如果每个项目的子问题下都不存在,我将否分配给该项目的“检查响应”列。我为检查响应列指定是,只有该项目的所有子问题答案均为“是”。

然后,根据新表格,我可以根据是回答的百分比直接计算分数。

由于我不了解Power BI语言,因此我不知道如何创建这样的表。除了我提出的解决方案之外,谁能提供示例代码/步骤或更好的解决方案?

请让我知道我是否足够清楚,以便让我感到困惑时可以详细解释任何事情。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以创建一个汇总表,如下所示:

SummaryTable =
    SUMMARIZE(
        Surveys,
        Surveys[Survey ID],
        Surveys[Question],
        Surveys[Item], 
        "MinAnswer", MIN(Surveys[Answer])
    )

请注意,只有当所有答案均为MinAnswer时,Yes才是Yes

您可以在度量中使用此表来计算调查的百分比得分。

PercentAllYes =
VAR SummaryTable =
    SUMMARIZE (
        Surveys,
        Surveys[Survey ID],
        Surveys[Question],
        Surveys[Item],
        "MinAnswer", MIN ( Surveys[Answer] )
    )
RETURN
    AVERAGEX ( SummaryTable, IF ( [MinAnswer] = "Yes", 1, 0 ) )

这两个调查将返回50%