Power BI |类别数据的折线图百分比

时间:2020-10-12 08:01:01

标签: powerbi powerbi-desktop

我想以折线图的形式显示我的数据,以该类别的百分比表示。在此母机视图中,我已经使用“显示值为”>“列总计的百分比”处理了用户的百分比数据。

wrong visulation

在此图像中您可以看到,我有用户的盘点数量,调查名称和答案文本。我想在Answertext行中显示SurveyName所产生的不同计数用户数据的表象。所以我需要这样的折线图:

true visulation

答案表:

ResponseID  QuestionID  QuestionText    AnswerID    AnswerText
XYZ1        Q1          qtext1          q1a1        q1a1text
XYZ1        Q2          qtext2          q2a1        q2a1text
XYZ1        Q3          qtext3          q3a1        q3a2text
XYZ2        Q1          qtext1          q1a2        q1a2text
XYZ2        Q3          qtext3          q3a1        q3a1text
XYZ3        Q1          qtext1          q1a1        q1a1text
XYZ3        Q2          qtext2          q2a2        q2a2text
XYZ3        Q3          qtext3          q3a2        q3a2text
XYZ4        Q1          qtext1          q1a1        q1a1text
XYZ4        Q2          qtext2          q2a1        q2a1text
XYZ4        Q3          qtext3          q3a2        q3a2text
XYZ5        Q1          qtext1          q1a3        q1a3text
XYZ5        Q2          qtext2          q2a1        q2a1text
XYZ6        Q2          qtext2          q2a3        q2a3text
XYZ6        Q3          qtext3          q3a1        q3a1text
XYZ7        Q1          qtext1          q1a2        q1a2text
XYZ7        Q3          qtext3          q3a2        q3a2text
XYZ8        Q1          qtext1          q1a1        q1a1text
XYZ8        Q2          qtext2          q2a2        q2a2text
XYZ8        Q3          qtext3          q3a1        q3a1text

响应表:

SurveyID    SurveyName  UserID  ResponseID
SV_1234     survey1     ABC1    XYZ1
SV_1234     survey1     ABC4    XYZ2
SV_1234     survey1     ABC2    XYZ3
SV_1234     survey1     ABC3    XYZ4
SV_5678     survey2     ABC1    XYZ5
SV_5678     survey2     ABC4    XYZ6
SV_5678     survey2     ABC3    XYZ7
SV_9821     survey3     ABC1    XYZ8

关键问题是根据答案和调查来分配参与一项以上调查的用户数量。因此,在这里我需要找到参与所选调查的普通用户,然后根据所选调查中问题的答案给出这些用户的分布。

2 个答案:

答案 0 :(得分:0)

首先,使用列 ResponseID 连接两个表。现在,在自定义列第一页

下创建此文件
SurveyName = RELATED(Responses[SurveyName])

现在创建如下的度量-

percentage = 

VAR current_survey_name = MIN(Answers[Surveyname])

VAR distict_resp_id_all_text = 
CALCULATE(
    DISTINCTCOUNT(Answers[ResponseID]),
    ALLEXCEPT(
        Answers,
        Responses[SurveyName]
    )
)

VAR distict_resp_id_per_text = 
CALCULATE(
    DISTINCTCOUNT(Answers[ResponseID]),
    ALLEXCEPT(
        Answers,
        Answers[AnswerText],
        Responses[SurveyName]
    )
)

RETURN distict_resp_id_per_text/distict_resp_id_all_text

这是给定样本数据的折线图中的最终输出-

enter image description here

答案 1 :(得分:0)

首先,我们需要计算UserID,而不是responseID。

在这里,我们将首先选择多个调查,如下所示,然后找到参与这些调查的普通用户数量。稍后,我们将根据轴上的SurveyNames给出这些普通用户的分布百分比。当然,这里在轴上每个SurveyName的AnswerText中,UserID百分比的总和应为100。

enter image description here

为此,我首先组合了响应表和答案表。然后,我输入了一个如下的度量值,以找到参与所选调查的普通用户数量。但是,当我将UserID编号添加到折线图时,它不会提供普通用户,而只会提供参与相关调查的总UserID。

//function to simulate the left join
function left_join_array($left, $right, $left_join_on, $right_join_on = NULL)
{
  $final = array();

  if (empty($right_join_on))
    $right_join_on = $left_join_on;

  foreach ($left as $k => $v) {
    $final[$k] = $v;
    foreach ($right as $kk => $vv) {
      if ($v[$left_join_on] == $vv[$right_join_on]) {
        foreach ($vv as $key => $val)
          $final[$k]['_' . $key] = $val; /* add prefix on the key */
        break; /* add break here */
      } else {
        foreach ($vv as $key => $val)
          $final[$k]['_' . $key] = NULL; /* add prefix on the key */
      }
    }
  }
  return $final;
}

enter image description here

如果您愿意,我可以发送我的电源报告。