我有一张表格,其中包含从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 |
上面是我从数据库加载的数据的示例。
编辑:有些问题没有附加项目列表。对这些问题的回答选项将为“是”或“否”。对于这些问题,如果答案为“是”,我将获得满分,如果答案为“否”,我将获得满分。
假设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分。
有人可以建议一种构造公式/新表的方法来实现我的目标吗?
我的逻辑是根据加载的当前数据创建一个新表。
如果每个项目的子问题下都不存在,我将否分配给该项目的“检查响应”列。我为检查响应列指定是,只有该项目的所有子问题答案均为“是”。
然后,根据新表格,我可以根据是回答的百分比直接计算分数。
由于我不了解Power BI语言,因此我不知道如何创建这样的表。除了我提出的解决方案之外,谁能提供示例代码/步骤或更好的解决方案?
请让我知道我是否足够清楚,以便让我感到困惑时可以详细解释任何事情。
谢谢!
答案 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%
。