SUM и SUMX - функции суммы в DAX (Power BI и Power Pivot)

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 ธ.ค. 2024
  • [Регистрируйтесь в бесплатном экспресс-курсе] Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot: biprosto.ru/ku...
    [Скачивайте PDF] Справочник DAX функций для Power BI и Power Pivot на русском языке: biprosto.ru/ku...
    Подробная статья по DAX функциям суммы в Power BI и Power Pivot (SUM и SUMX): biprosto.ru/da...
    Рубрика: #biprosto_DAX
    Наш главный сайт "BI - это просто": biprosto.ru
    В данном видео мы разберем функции суммирования в Power BI и Power Pivot, входящие в категорию агрегационных функций в DAX, а конкретно SUMX и SUM, рассмотрим их параметры, особенности работы и примеры формул.
    SUM () - производит сумму всех чисел в столбце. Если строка в столбце содержит значение с иным типом данных, нежели числовой, то для работы SUM возвращается пустое значение.
    Синтаксис: SUM ([Столбец])
    SUMX () - вычисляет сумму результатов построчного выполнения выражения.
    Синтаксис: SUMX (‘Таблица’; Выражение), где:
    ‘Таблица’ - исходная таблица или табличное выражение, по строкам которой будет вычисляться выражение из второго параметра функции
    Выражение - любое выражение, которое необходимо выполнить по строкам таблицы, входящей в первый параметр функции.
    SUMX работает в 2 действия. Для начала, вычисляется выражение из второго параметра функции для каждой строки таблицы, входящей в первый параметр. По мере построчного вычисления, результаты временно запоминаются в некой виртуальной таблице. Затем SUMX складывает все результаты из этой виртуальной таблицы и выдает итоговую сумму.
    #powerbi #DAX #power_bi #power_pivot #функции #сумма #SUM #SUMX

ความคิดเห็น • 31

  • @АнастасияНикифорова-л6щ
    @АнастасияНикифорова-л6щ ปีที่แล้ว +2

    Очень нравится как объясняете. Превосходная подача. И визуальный ряд отличный.

  • @Елена_Позднякова
    @Елена_Позднякова 6 ปีที่แล้ว +7

    Антон, благодарю за Ваш труд! У Вас блестящая подача! Все очень наглядно, четко, кратко и по делу. Удачи и развития вашему проекту, тем более, что в рунете сложно найти доступную информацию по Power BI. Очень рада, что Вас нашла. Рекомендую всем!!! Бесплатный курс по DAX - класс!!!

  • @user-pc9bn5ic3z
    @user-pc9bn5ic3z 3 ปีที่แล้ว +2

    Супер, прекрасное об'яснение и очень информативные ответы в комментариях.

  • @МаксимК-ч4й
    @МаксимК-ч4й 6 ปีที่แล้ว +4

    Антон, большое спасибо!!! Очень крутой контент на канале и сайте.
    Действительно помогает разобраться с DAX в Power BI и делать интересные проекты по аналитике.

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  6 ปีที่แล้ว

      Максим, пожалуйста! Очень рад, что материал Вам помогает

    • @AndriyYakshin
      @AndriyYakshin 6 ปีที่แล้ว

      Но я выводил простой столбец в диаграмму столбец и он суммировал все значения столбца. Не пойму зачем нужен анрегатор для этого...

  • @faizallc1628
    @faizallc1628 3 ปีที่แล้ว

    Класс.

  • @rifrafikov9059
    @rifrafikov9059 5 ปีที่แล้ว

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

  • @ВладаКомпаниец-и9л
    @ВладаКомпаниец-и9л 3 ปีที่แล้ว

    Добрый день! Спасибо огромное за видео! Подскажите, пожалуйста, а как быть если в качестве фильтра необходимо использовать не конкретный параметр (год или название товара), а множество из другой таблицы. Постараюсь объяснить на примере. У меня есть табличка Статистика продаж (столбцы: дата, магазин, продукт, выручка) и отдельно табличка Календарь акций (столбцы: дата, условия акции). Мне нужно посчитать сумму выручки по датам, когда проходили акции (даты использовать из таблицы Календарь акций).
    Буду неимоверно благодарна за обратную связь!!!

  • @tehstand847
    @tehstand847 5 ปีที่แล้ว

    Здравсвуте! Можно на основании мер, расчитать столбец?

  • @glme1986
    @glme1986 5 ปีที่แล้ว +2

    Антон, спасибо большое за видео! не просто найти так хорошо структурированную информацию по DAX. Подскажите а можно ли как-то задать переменное условие в фильтре, а не константу? например, чтоб по каждой строке в новом столбце выдавало сумму только "этого региона", регион при этом указан в каком-то столбце этой-же таблицы

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  5 ปีที่แล้ว +1

      Да, Александр, так можно. Нужно в условии фильтра использовать функцию EARLIER и с помощью нее зацепляться за контекст строки.
      FILTER('Таблица'; 'Таблица'[Регион] = EARLIER('Таблица'[Регион])).
      Более подробно о функции EARLIER: biprosto.ru/dax/earlier.html
      Подробный видеокурс о технологии фильтрации FILTER + EARLIER: biprosto.ru/lp/big-work-filter-dax

    • @glme1986
      @glme1986 5 ปีที่แล้ว

      @@bi-powerbipivotdax7623 спасибо!

  • @DiachenkoOleksandr
    @DiachenkoOleksandr 6 ปีที่แล้ว +1

    А чем отличается ваши варианты записей от записей:
    Мера = SUM(продажа) - SUM(затраты)
    или
    Мера = CALCULATE(SUM(продажа) - SUM(затраты) ; товар = "товар1")
    ?

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  6 ปีที่แล้ว +3

      Ваша формула "Мера = SUM(продажа) - SUM(затраты)" - по сути ничем не отличается, этой формулой также можно рассчитать прибыль. Но в видео была другая задача - показать работу функции SUMX.
      А вот на счет второй Вашей формулы "Мера = CALCULATE(SUM(продажа) - SUM(затраты) ; товар = "товар1")" - то она уже отличается от моей формулы из видео. Я для фильтрации использовал функцию FILTER. А в Вашей формуле фильтрация осуществляется путем принудительного вычисления прибыли по Товару 1 с помощью CALCULATE.
      И разница от моей формулы с FILTER будет в следующем - FILTER фильтрует исходную таблицу, а CALCULATE принудительно вычисляет под прописанным условием с заменой всех пользовательских фильтров. А это значит, в ситуации с FILTER если пользователь введет пользовательский фильтр "Товар 2", то функция FILTER вернет пустую таблицу, так как она в Товаре 2 не найдет Товар 1. Как следствие, вместо прибыли возвратится пустое значение.
      А в Вашей формуле CALCULATE заменит пользовательский фильтр "Товар2" на свой "Товар1" и результатом выполнения формулы будет прибыль по Товару 1, несмотря на то, что пользователь поставил свой пользовательский фильтр "Товар2"
      Более подробнее о CALCULATE мы будем говорить на курсе: biprosto.ru/kurs/dax-kurs-free

    • @DiachenkoOleksandr
      @DiachenkoOleksandr 6 ปีที่แล้ว

      @@bi-powerbipivotdax7623 Спасибо.
      Ждем новые видео)
      Calculatetable, Values и др.самые ходовые ф-ии :)

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  6 ปีที่แล้ว

      да-да, будут вскоре видео по этим функциям

  • @57drozdov
    @57drozdov 5 ปีที่แล้ว

    Вопрос, какая из функций меньше загружает процессор и быстрей работает?
    Правильно я предполагаю функция sum будет быстрей работать чем sumx ?

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  5 ปีที่แล้ว

      Не знаю... этим вопросом никогда не задавался. В целом, они должны работать одинаково, так как SUM - это упрощенный частный случай (или выражаясь языком программирования, "синтаксический сахар") функции SUMX.
      То есть, SUM('Таблица'[Столбец]) - это SUMX('Таблица';'Таблица'[Столбец])

  • @ЮлияК-б6л
    @ЮлияК-б6л 5 ปีที่แล้ว +1

    Антон, можно же SUM(продажи)-SUM(расходы) написать? Тоже самое будет?

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  5 ปีที่แล้ว

      Да, можно. В таком случае будет посчитана сначала сумма всего столбца [Продажи], затем сумма всего столбца [Расходы], ну и только после всего этого разница между суммой столбца [Продажи] и суммой столбца [Расходы]

    • @deniskorolev9542
      @deniskorolev9542 5 ปีที่แล้ว +1

      Тогда это получится, как в Экселе, в принципе. То есть мы не сможем смотреть отдельно каждый товар в реальном времени. Антон, я ведь правильно говорю?

    • @ivanshipilov4265
      @ivanshipilov4265 3 ปีที่แล้ว

      @@deniskorolev9542 Думаю пример несколько некорректный был. Для программы гораздо проще и менее ресурсо затратно использовать SUM(...) + SUM (...) или если требуется просчитать отфильтрованные данные CALCULATE (SUM(...)+SUM(...), столбец = 'параметр'). В случае с SQL это критично так как меньше грузит и блокирует базу. Задача SUMX в том что это строковый параметр. Он сильно грузит систему, но более корректный когда это требуется.

  • @tirin3383
    @tirin3383 3 ปีที่แล้ว

    Здравствуйте. Справочник скачать не удается. На почту ничего не приходит. Уже нельзя это сделать?

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  3 ปีที่แล้ว

      здравствуйте, можно. Напишите мне на емейл support@biprosto.ru я Вам вышлю ссылку

    • @tirin3383
      @tirin3383 3 ปีที่แล้ว

      @@bi-powerbipivotdax7623 хорошо, спасибо. Подскажите, пожалуйста, есть ли в Power BI какая-то функция по типу счётесли, как в Эксель. Как можно посчитать количество проданных товаров (по id товара) в каждом магазине (по id магазина)?

  • @AndriyYakshin
    @AndriyYakshin 6 ปีที่แล้ว

    Антон, спасибо за то что понятно объясняете. Вопрос: для использования в отчете обязательно тут в примере считать меру СУМ по доходу? Разве не достаточно просто поле доход?

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  6 ปีที่แล้ว

      Андрей, в мере указать просто столбец не получится - будет ошибка, так как значения из столбца нужно как-то агрегировать. В данном случае, функция SUM агрегирует столбец по сумме

    • @AndriyYakshin
      @AndriyYakshin 6 ปีที่แล้ว

      Антон, спасибо, но смотрите, вопрос был: зачем для целейвыведения в отчет инфо по столбцу Сумма, перед этим считать меру с СУМ(Сумма) и выводить уже ее? Не проще ли просто составить диаграмму, вывев просто столбец Сумма?

    • @bi-powerbipivotdax7623
      @bi-powerbipivotdax7623  6 ปีที่แล้ว

      можно и так сделать, но лучше все-же все агрегации прописывать явно через свои меры.
      Когда Вы в диаграмму переносите столбец, то, на самом деле DAX все-равно создает скрытую меру за Вас. На первый взгляд - это удобно, но с другой стороны, возникает потенциальная возможность совершения ошибки, так как при переносе столбца в диаграмму, DAX автоматически считает сумму, а Вам, например, нужен расчет количества. При большой загрузке и суете можно просто об этом забыть. Тем более, если отчетом будет пользоваться другой пользователь - у него риск ошибки возрастает.
      Следующий момент - в больших отчетах практически во всех формулах нужно подсчитывать агрегацию. И вместо того, чтобы постоянно писать вновь и вновь функции агрегации, можно один раз написать простую меру суммы и затем всегда ссылаться на эту меру.
      В общем, подводя итог - можно сумму через меру не считать, а просто столбец перекинуть в диаграмму, но это будет не совсем профессионально с точки зрения моделирования. Так можно делать в небольших отчетах..., "для себя", если нужно быстро, разово и т.д. Если отчет большой, то лучше все делать сразу правильно - все расчеты через меры