根据子问题中回答是的数量计算问题分数
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%
。
我有一个 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%
。