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
Очень нравится как объясняете. Превосходная подача. И визуальный ряд отличный.
Антон, благодарю за Ваш труд! У Вас блестящая подача! Все очень наглядно, четко, кратко и по делу. Удачи и развития вашему проекту, тем более, что в рунете сложно найти доступную информацию по Power BI. Очень рада, что Вас нашла. Рекомендую всем!!! Бесплатный курс по DAX - класс!!!
спасибо за обратную связь
Супер, прекрасное об'яснение и очень информативные ответы в комментариях.
Антон, большое спасибо!!! Очень крутой контент на канале и сайте.
Действительно помогает разобраться с DAX в Power BI и делать интересные проекты по аналитике.
Максим, пожалуйста! Очень рад, что материал Вам помогает
Но я выводил простой столбец в диаграмму столбец и он суммировал все значения столбца. Не пойму зачем нужен анрегатор для этого...
Класс.
Добрый вечер, подскажите пожалуйста, возможно ли вывести итоговые суммы по месяцам с помощью dax формул. К примеру итого январь, февраля и тд.
Добрый день! Спасибо огромное за видео! Подскажите, пожалуйста, а как быть если в качестве фильтра необходимо использовать не конкретный параметр (год или название товара), а множество из другой таблицы. Постараюсь объяснить на примере. У меня есть табличка Статистика продаж (столбцы: дата, магазин, продукт, выручка) и отдельно табличка Календарь акций (столбцы: дата, условия акции). Мне нужно посчитать сумму выручки по датам, когда проходили акции (даты использовать из таблицы Календарь акций).
Буду неимоверно благодарна за обратную связь!!!
Здравсвуте! Можно на основании мер, расчитать столбец?
Антон, спасибо большое за видео! не просто найти так хорошо структурированную информацию по DAX. Подскажите а можно ли как-то задать переменное условие в фильтре, а не константу? например, чтоб по каждой строке в новом столбце выдавало сумму только "этого региона", регион при этом указан в каком-то столбце этой-же таблицы
Да, Александр, так можно. Нужно в условии фильтра использовать функцию EARLIER и с помощью нее зацепляться за контекст строки.
FILTER('Таблица'; 'Таблица'[Регион] = EARLIER('Таблица'[Регион])).
Более подробно о функции EARLIER: biprosto.ru/dax/earlier.html
Подробный видеокурс о технологии фильтрации FILTER + EARLIER: biprosto.ru/lp/big-work-filter-dax
@@bi-powerbipivotdax7623 спасибо!
А чем отличается ваши варианты записей от записей:
Мера = SUM(продажа) - SUM(затраты)
или
Мера = CALCULATE(SUM(продажа) - SUM(затраты) ; товар = "товар1")
?
Ваша формула "Мера = 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
@@bi-powerbipivotdax7623 Спасибо.
Ждем новые видео)
Calculatetable, Values и др.самые ходовые ф-ии :)
да-да, будут вскоре видео по этим функциям
Вопрос, какая из функций меньше загружает процессор и быстрей работает?
Правильно я предполагаю функция sum будет быстрей работать чем sumx ?
Не знаю... этим вопросом никогда не задавался. В целом, они должны работать одинаково, так как SUM - это упрощенный частный случай (или выражаясь языком программирования, "синтаксический сахар") функции SUMX.
То есть, SUM('Таблица'[Столбец]) - это SUMX('Таблица';'Таблица'[Столбец])
Антон, можно же SUM(продажи)-SUM(расходы) написать? Тоже самое будет?
Да, можно. В таком случае будет посчитана сначала сумма всего столбца [Продажи], затем сумма всего столбца [Расходы], ну и только после всего этого разница между суммой столбца [Продажи] и суммой столбца [Расходы]
Тогда это получится, как в Экселе, в принципе. То есть мы не сможем смотреть отдельно каждый товар в реальном времени. Антон, я ведь правильно говорю?
@@deniskorolev9542 Думаю пример несколько некорректный был. Для программы гораздо проще и менее ресурсо затратно использовать SUM(...) + SUM (...) или если требуется просчитать отфильтрованные данные CALCULATE (SUM(...)+SUM(...), столбец = 'параметр'). В случае с SQL это критично так как меньше грузит и блокирует базу. Задача SUMX в том что это строковый параметр. Он сильно грузит систему, но более корректный когда это требуется.
Здравствуйте. Справочник скачать не удается. На почту ничего не приходит. Уже нельзя это сделать?
здравствуйте, можно. Напишите мне на емейл support@biprosto.ru я Вам вышлю ссылку
@@bi-powerbipivotdax7623 хорошо, спасибо. Подскажите, пожалуйста, есть ли в Power BI какая-то функция по типу счётесли, как в Эксель. Как можно посчитать количество проданных товаров (по id товара) в каждом магазине (по id магазина)?
Антон, спасибо за то что понятно объясняете. Вопрос: для использования в отчете обязательно тут в примере считать меру СУМ по доходу? Разве не достаточно просто поле доход?
Андрей, в мере указать просто столбец не получится - будет ошибка, так как значения из столбца нужно как-то агрегировать. В данном случае, функция SUM агрегирует столбец по сумме
Антон, спасибо, но смотрите, вопрос был: зачем для целейвыведения в отчет инфо по столбцу Сумма, перед этим считать меру с СУМ(Сумма) и выводить уже ее? Не проще ли просто составить диаграмму, вывев просто столбец Сумма?
можно и так сделать, но лучше все-же все агрегации прописывать явно через свои меры.
Когда Вы в диаграмму переносите столбец, то, на самом деле DAX все-равно создает скрытую меру за Вас. На первый взгляд - это удобно, но с другой стороны, возникает потенциальная возможность совершения ошибки, так как при переносе столбца в диаграмму, DAX автоматически считает сумму, а Вам, например, нужен расчет количества. При большой загрузке и суете можно просто об этом забыть. Тем более, если отчетом будет пользоваться другой пользователь - у него риск ошибки возрастает.
Следующий момент - в больших отчетах практически во всех формулах нужно подсчитывать агрегацию. И вместо того, чтобы постоянно писать вновь и вновь функции агрегации, можно один раз написать простую меру суммы и затем всегда ссылаться на эту меру.
В общем, подводя итог - можно сумму через меру не считать, а просто столбец перекинуть в диаграмму, но это будет не совсем профессионально с точки зрения моделирования. Так можно делать в небольших отчетах..., "для себя", если нужно быстро, разово и т.д. Если отчет большой, то лучше все делать сразу правильно - все расчеты через меры