Сумма DAX отфильтрована по нескольким столбцам связанных таблиц - PullRequest
1 голос
/ 18 февраля 2020

У меня есть мера, которая добавляется в таблицу и карту. Эта мера используется для отображения общего количества часов, в которые были отправлены вызовы. [Sch Engineer] = Hours.Employee AND Calls.ProjID = Hours.ProjID

Значение в каждой строке таблицы является правильным. Однако общее значение для этой меры неверно в таблице, а также в Карте, и я не могу понять, почему.

Итак, мера:

SchEngHrsOnly =
VAR main =
    MAX ( Calls[Sch Engineer] )
RETURN
    CALCULATE ( SUM ( 'Hours'[Hrs] ), Hours[Employee] = main )

Когда я добавляю это к Визуальная таблица Я получаю следующее - итоговая таблица и значение карты для меры неверны - они должны быть 163.50:

enter image description here

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

enter image description here

Моя модель данных:

enter image description here

Мои отношения:

enter image description here

Я хочу получить:

enter image description here

Также, пожалуйста, смотрите здесь файл PBIX:

Файл PBIX

Может кто-нибудь помочь с этим вопросом, пожалуйста?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Если вы хотите СУММУ МАКСИМАЛЬНЫХ значений, тогда go таким образом:

SumOfMaxes = 
SUMX(
  VALUES( Hours[ProjID] ),
  CALCULATE( MAX( Hours[Hrs]) )
)

Это производит:

enter image description here

Вас также может заинтересовать:

DAX ALLEXCEPT для суммирования по категориям таблиц с несколькими измерениями

DAX Медиана сумм категорий

Редактировать

После ваших объяснений я вижу, что вы хотите отфильтрованную сумму.

FilteredSum = 
CALCULATE (
    SUM ( Hours[Hrs] ),
    FILTER (
        Hours,
        Hours[Employee] = RELATED ( Calls[Sch Engineer] )
            && Hours[ProjID] = RELATED ( Calls[Proj ID] )
    )
)

enter image description here

https://www.sqlbi.com/blog/marco/2010/02/09/how-to-relate-tables-in-dax-without-using-relationships/

0 голосов
/ 18 февраля 2020

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

Hours Calc = CALCULATE(MAX(Hours[Hrs]),FILTER(Hours,Hours[ProjID]=Calls[ProjID]))

Приведенный выше расчет добавит столбец с максимальным количеством часов для каждого идентификатора проекта. Затем вы можете подвести итоги в итоговой таблице и получить желаемые результаты. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...