根据子问题中回答是的数量计算问题分数

Calculate the question scores based on the number of yes response in sub-questions

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

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

每个问题下都有附上的项目列表,项目列表因完成的不同调查而异。

例如,对于调查 ID A1(用于区分已完成的不同调查的调查 ID)的调查,Q1 有 5 个项目要求,而调查 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    |

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

编辑:有些问题没有附上项目列表。这些问题的回答选项将是 "yes" 或 "no"。这道题,答"yes"满分,"no"给0分。

假设 Q1 和 Q2 都值 10 分。

每项调查的分数应为:

调查 A1:对于 Q1,我得到 5 分。对于项目 X,我在 3 个子问题中得到 1 个是,因此不算数;对于项目 Y,我在 3 个子问题中得到 3 个是,因此它很重要。我得到了 2 项中 1 项的分数,因此我得了 5 分(满分 10 分)。

同样,对于Q2,我没有得到X项的分数,但是我得到了Y项的分数,所以Q2我得到了5分。

因此,我在调查 A1 中的总分是 10 分(满分 20 分)。

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

任何人都可以建议一种构建 formula/new table 以实现我的目标的方法吗?

我的逻辑是根据我加载的当前数据制作一个新的table。

如果每个项目的子问题下有任何否,我将否分配给该项目的检查响应列。我只为该项目的所有子问题答案的检查响应列分配是 "yes"。

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

由于我不了解 Power BI 语言,所以我不知道如何创建这样的 table。除了我提出的解决方案之外,谁能提供 code/steps 或更好的解决方案的示例?

如果我足够清楚,请告诉我,如果我让您感到困惑,我可以详细解释。

提前致谢!

您可以像这样创建摘要table:

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

请注意,只有当所有答案都是 Yes 时,MinAnswer 才会是 Yes

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

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

两项调查都将 return 50%