Как создать меру без агрегации?

У меня есть две таблицы в моей модели данных, которые связаны с помощью DirectQuery. Сначала у меня есть список расходов, связанных со счетами:

Введите описание изображения здесь

А во-вторых список групп аккаунтов. Один и тот же счет может быть в разных группах и для некоторых его значение может быть отрицательным:

Введите описание изображения здесь

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

Введите описание изображения здесь

Моей первой интуицией было написать это так:

CalcAmount = SUM(Continents[Multiplier]) * SUM(Costs[Amount])

Однако результат неверен. Например, для группы D сначала суммируется множитель 1 и множитель -1 и получается 0. Затем он умножает 0 на сумму, и поэтому результат всегда 0, когда множители +1 и -1.

Как я могу создать формулу, которая не агрегирует множители и вместо этого умножает каждое значение по отдельности?

1 ответ

  1. Почему это не работает

    Мера, которую вы написали, является неправильной, потому что она делает именно то, что вы описали: суммирование Multiplier/ Amountстолбцов перед умножением. Это должно быть что-то вроде следующего:

    CalcAmount = SUM(Groups[Multiplier] * Costs[Amount])
    

    Однако для его работы в Power BI необходимо следующее:

    • Правильное соотношение между двумя таблицами
    • Используйте функцию SUMX() вместо SUM()

    Как заставить его работать

    Я предлагаю вам либо сгруппировать Costsтаблицу по Account(или создать новую таблицу из текущей, если вам нужно сохранить необработанные данные), чтобы вы могли установить отношение «один ко многим» с Groupsтаблицей в Accountстолбце.

    Costs таблица:

    затраты

    отношение

    После этого можно создать меру и использовать SUMX()функцию для выполнения оценки по строкам:

    CalcAmount = SUMX(Groups, Groups[Multiplier] * RELATED(Costs[Amount]))
    

    Результат будет как и ожидалось:

    результат

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

    разрушение


    Edit: (альтернативное решение путем создания новой таблицы)

    Создание Accountsтаблицы только с отдельным Accountстолбцом:
    запрос учетных записей
    счета

    Связь между таблицами:
    отношения

    Создание Total Amountмеры, которая вычисляет итог для каждого счета:

    Total Amount = SUM(Costs[Amount])
    

    Используйте меру вместо Costs[Amount]CalcAmountмеры:

    CalcAmount = SUMX(Groups, Groups[Multiplier] * [Total Amount])
    

    Такой же результат как выше:

    окончательный результат