Как сделать SUMIF в Power BI (CALCULATE/SUM)

Вопрос или проблема

У меня есть таблица в Excel, которая использует функцию СУММЕСЛИ, следующую формулу:

=СУММЕСЛИ(Table[[#Все];[Book Balance Value]];Table[[#Все];[Product code]];[@Product])

Она суммирует все значения Book Balance Value, используя код продукта в качестве критерия, а @Product ссылается на код продукта.

Однако, при попытке использовать это в PowerBI, она не работает, поэтому я использую:

CALCULATE(SUM(ODS[Book Balance Value]), ODS[Product code], ODS[Product])

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

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

Для эквивалента SUMIFS в виде выражения DAX попробуйте следующий синтаксис:

SUMIFS = SUMX(
            FILTER('Table',
                        EARLIER([Column1])=[Column1] &&
                        EARLIER([Column3])=[Column3]), 
            [Column2])

Вы можете объединять столько условий, сколько хотите, в выражении FILTER. Функция EARLIER относится к текущей строке.

Ответ или решение

Вопрос о том, как выполнять операции суммирования с условиями (SUMIFs) в Power BI аналогично тому, как это делается в Excel, является достаточно распространённым среди специалистов в области анализа данных. В отличие от Excel, где для выполнения таких операций можно использовать простые функции, в DAX (язык формул Power BI) существуют свои спецификации и подходы, что важно понимать для достижения необходимых результатов.

Использование DAX для SUMIFs в Power BI

Давайте подробно рассмотрим, как правильно реализовать логику функции SUMIF в DAX, а также как применить функцию CALCULATE в сочетании с SUM.

Понимание вашей текущей формулы Excel

Вы упомянули, что используете формулу Excel:

=SUMIF(Table[[#All];[Book Balance Value]];Table[[#All];[Product code]];[@Product])

Эта формула суммирует значения в колонке "Book Balance Value", фильтруя их по значению в колонке "Product code", которое должно совпадать с текущим значением "Product" ([@Product]).

Правильный перевод в DAX

Для того чтобы реализовать аналогичную логику в Power BI, вы можете воспользоваться функцией CALCULATE вместе с SUM. Но важно правильно указать условия фильтрации. Ваше текущее использование CALCULATE выглядит не совсем корректно:

CALCULATE(SUM(ODS[Book Balance Value]), ODS[Product code], ODS[Product])

Здесь не хватает логического оператора для проведения фильтрации. Вместо этого правильная форма будет иметь следующий вид:

SUMIFs_DAX = CALCULATE(
    SUM(ODS[Book Balance Value]),
    ODS[Product code] = SELECTEDVALUE(ODS[Product])
)

Расширение: Использование SUMX и FILTER

В случае, если вам нужно применить несколько условий, можно использовать более мощный подход с применением SUMX и FILTER. Например:

SUMIFS_Advanced = SUMX(
    FILTER(
        ODS,
        ODS[Product code] = SELECTEDVALUE(ODS[Product]) && 
        ODS[OtherCondition] = SomeValue // Другие условия
    ),
    ODS[Book Balance Value]
)

Здесь функция FILTER позволяет указать любую комбинацию условий, а SUMX будет производить суммирование по отфильтрованному набору данных.

Резюме

  1. Для выполнения простой операции суммирования с условиями используйте CALCULATE и SUM.
  2. При необходимости учитывать множество критериев фильтрации применяйте SUMX в сочетании с FILTER.
  3. Всегда помните о значении SELECTEDVALUE, чтобы корректно обращаться к полям таблицы.

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

Если у вас остались дополнительные вопросы или нужна помощь с конкретными примерами, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...