Power Bi 自定义比较条形图
Power Bi Customised comparison bar chart
我有一份学生名单,他们的分数基于三个科目。学生来自各个城市。
我想根据 selected 学生城市显示一个学生与其他学生的比较条形图。
如果我 select 给学生 1,那么我应该得到学生 1' 城市(城市 1)的所有其他学生,并根据他们的分数比较他们的分数,例如学生 1 的分数与其他学生的总和' 标记。
我可以把上面的图表与其他学生进行比较。唯一的问题是现在应该将学生与城市只是 selected 学生城市的其他学生进行比较。
如果我选择学生1,应该只拿城市1的学生进行比较。
我把table改成了下面这样,
我创建了学生+其他table
Students + Others =
UNION(
VALUES(Sheet1[Student Name]),
ROW("Student Name", "Others")
)
创建了另一个措施,如下所示,
Marks vs Others =
VAR CurrentStudent = MAX('Students + Others'[Student Name])
VAR SelectedStudents = ALLSELECTED(Sheet1[Student Name])
VAR PossibleStudents = ALL(Sheet1[Student Name])
RETURN
SWITCH(
TRUE(),
CurrentStudent IN SelectedStudents,
CALCULATE(
[Total Marks],
Sheet1[Student Name] = CurrentStudent
),
CurrentStudent = "Others",
CALCULATE(
[Total Marks],
FILTER(
ALL(Sheet1[Student Name]),
Sheet1[Student Name] IN PossibleStudents
&& NOT(Sheet1[Student Name] In SelectedStudents)
)
)
)
我现在制作的图表就像下面的字段
现在我唯一的问题是,如果我select学生1,那么学生1所在的城市应该是哪个城市的学生。
在我的例子中,应该只需要学生 2 和学生 5 来比较学生 1。
希望以下代码对您有用。请modify/optimize根据您的实际需求进行编码。
创建度量:
OthersTotalAllSubject =
var selectedCity = SELECTEDVALUE(School[City])
var OtherTotal = IF(ISBLANK(selectedCity),CALCULATE(sum(School[Marks]),ALL(School[StudentName])),
calculate(sum(School[Marks]),FILTER(ALL(School[StudentName],School[City],School[Marks]), selectedCity = School[City])))
var selectedStudentMarks = SUM(School[Marks])
return OtherTotal - selectedStudentMarks
创建另一个度量
SelectedStudentTotalAllMarks = CALCULATE(sum(School[Marks]))
将两个度量都放在条形图的 VALUES 中并 'Subject' 放在 AXIS 上。
Student1 vs AllStudentofSameCity
Student3 vs AllStudentofSameCity
如果您需要有关此解决方案的任何信息,请告诉我。
我有一份学生名单,他们的分数基于三个科目。学生来自各个城市。
我想根据 selected 学生城市显示一个学生与其他学生的比较条形图。
如果我 select 给学生 1,那么我应该得到学生 1' 城市(城市 1)的所有其他学生,并根据他们的分数比较他们的分数,例如学生 1 的分数与其他学生的总和' 标记。
我可以把上面的图表与其他学生进行比较。唯一的问题是现在应该将学生与城市只是 selected 学生城市的其他学生进行比较。
如果我选择学生1,应该只拿城市1的学生进行比较。
我把table改成了下面这样,
我创建了学生+其他table
Students + Others =
UNION(
VALUES(Sheet1[Student Name]),
ROW("Student Name", "Others")
)
创建了另一个措施,如下所示,
Marks vs Others =
VAR CurrentStudent = MAX('Students + Others'[Student Name])
VAR SelectedStudents = ALLSELECTED(Sheet1[Student Name])
VAR PossibleStudents = ALL(Sheet1[Student Name])
RETURN
SWITCH(
TRUE(),
CurrentStudent IN SelectedStudents,
CALCULATE(
[Total Marks],
Sheet1[Student Name] = CurrentStudent
),
CurrentStudent = "Others",
CALCULATE(
[Total Marks],
FILTER(
ALL(Sheet1[Student Name]),
Sheet1[Student Name] IN PossibleStudents
&& NOT(Sheet1[Student Name] In SelectedStudents)
)
)
)
我现在制作的图表就像下面的字段
现在我唯一的问题是,如果我select学生1,那么学生1所在的城市应该是哪个城市的学生。 在我的例子中,应该只需要学生 2 和学生 5 来比较学生 1。
希望以下代码对您有用。请modify/optimize根据您的实际需求进行编码。 创建度量:
OthersTotalAllSubject =
var selectedCity = SELECTEDVALUE(School[City])
var OtherTotal = IF(ISBLANK(selectedCity),CALCULATE(sum(School[Marks]),ALL(School[StudentName])),
calculate(sum(School[Marks]),FILTER(ALL(School[StudentName],School[City],School[Marks]), selectedCity = School[City])))
var selectedStudentMarks = SUM(School[Marks])
return OtherTotal - selectedStudentMarks
创建另一个度量
SelectedStudentTotalAllMarks = CALCULATE(sum(School[Marks]))
将两个度量都放在条形图的 VALUES 中并 'Subject' 放在 AXIS 上。
Student1 vs AllStudentofSameCity Student3 vs AllStudentofSameCity
如果您需要有关此解决方案的任何信息,请告诉我。