2017-01-30 3 views
1

У меня есть следующий сценарий. У меня есть студенты, которые проходят тест. Одновременно они могут иметь более одного наблюдателя. Я хотел бы создать расчет в DAX, который вычисляет средний балл на каждом уровне (т. Е. Отдел, супервайзер, студент).Вычислить вычисление по SUMMARIZE в DAX

Исходная таблица содержит один тест на каждого учащегося, но я «оставил» эту таблицу с недавно созданным, студенческим руководителем, поэтому я могу вычислить также оценку над супервизором. Проблема заключается в том, когда я вычисляю средний балл для каждого отдела, потому что он содержит все дубликаты, которые я создал с этой новой таблицей.

Это мои таблицы:

enter image description here

И это моя модель:

enter image description here

Очевидный DAX, который просто вычисляет среднее значение баллов отлично работает для студентов и контролеров на сводной таблице ниже, но это неправильно на уровне департамента:

Avg Score:=AVERAGE(score[Score]) 

enter image description here

На данный момент я пробовал что-то вроде следующего, но безуспешно. Моей целью было создать динамическую таблицу с SUMMARIZE, которая группирует testid и делает среднее значение. Затем я хотел бы снова усреднить это, что будет правильным счетом и преобразовать значение 1column-1row в числовое значение. Но это не сработает, и я не уверен, почему:

Avg Score= VAR ThisTable=SUMMARIZE(score,score[TestId],"IndividualScore",AVERAGE(score[Score])) RETURN SUMMARIZE(ThisTable,"AvgScore",AVERAGE([IndividualScore])) 

ответ

0

Так я подхожу к нему.

Сначала создайте меру, как ниже, чтобы получить счет в каждом контексте:

Sum Score := MAX(Score[Score]) 

Затем создать среднюю меру расчета:

Avg Score := 
DIVIDE (
    SUMX (DISTINCT (Score[Student]), [Sum Score]), 
    DISTINCTCOUNT (Score[Student]) 
) 

Примечание требуется Sum Score мера, поскольку в Avg Score меры использует его для выполнения расчета.

вы получите что-то вроде этой матрицы (Pivot Table) в электроэнергетике BI:

enter image description here

Позвольте мне знать, если это помогает.

+0

Привет, alejandro, большое спасибо за ваш ответ. У вашего расчета есть проблема, когда у ученика более 1 уникального теста, но ваша идея SUMX помогла разобраться в этом, я опубликую его ниже. Опять же, спасибо! – Victor

+0

@Victor, вы не указали, что в своем вопросе я рад, что вам удалось его решить. –

0

Хорошо, поэтому благодаря идее алехандро я смог понять ответ. В основном я создаю «на лету» таблицу с группой по идентификатору теста и среднему счету (т. Е. Реальному счету). Затем я использую AVERAGEX для вычисления среднего значения этих тестов. Вот код DAX:

Avg CSAT:=VAR ThisTable=SUMMARIZE(score,score[TestId],"SumOfScore",AVERAGE(score[Score])) RETURN AVERAGEX(ThisTable,[SumOfScore]) 
Смежные вопросы