Страницы: 1
RSS
DAX (Power BI) : Сумма накопленная за дни
 
Подскажите плиз как сделать.

Нужно за каждый новый день суммировать значения всех предыдущих дней (включая сегодняшний) столбца rev. Т.е. каждое новое значение становится больше за счет суммирования с предыдущими.
Так же со столбцом ndc.
И в итоге получить столбец Сумма(rev)/Сумма(ndc)

Надеюсь понятно объяснил. Спасибо.
 
AndrewRob, приложите файл-пример.
 
В power bi еще плохо ориентируюсь. Данные тянутся из базы mysql.
Таблица conv. Колонки date, rev, ndc.

Постараюсь объяснить на примере excel что хочу:
https://prnt.sc/oxlclk
http://prntscr.com/oxldch
http://prntscr.com/oxlevd

Т.е. в выделенных столбцах в каждой новой ячейки значения - это сумма нынешнего значения и всех предыдущих.
http://prntscr.com/oxlg78
Мне нужен результат последнего столбца.

Надеюсь так понятнее.
Изменено: AndrewRob - 26.08.2019 13:20:38
 
AndrewRob, задача понятна. Для ее решения нужна не картинка а файл-пример.
 
Без примера в общем виде структура меры "сумма накопительным итогом" следующая:
Код
=CALCULATE(
   SUM('таблица с вашими данными'[столбец с суммой]);
   FILTER(
      ALL('таблица с вашими данными');
      'таблица с вашими данными'[Дата]<=MAX('таблица с вашими данными'[Дата])
   )
)
 
Сделал маленький пример.
Формула рабочая. Но при применении фильтров продолжает показывать только глобальные данные. Мне нужен отсчет не за все время, а с учетом выбранного временного отрезка. + Возможность использовать другие фильтры.
 
Доброе время суток
Цитата
AndrewRob написал:
Возможность использовать другие фильтры.
А почитать по используемым Владимиром в мере функциям информацию - религия не позволяет? Как учиться-то DAX предполагаете? Глава 9. DAX-функция ALL() для снятия фильтров
 
Пример, есть, уже хорошо, но правильно и проявлением хорошего тона на форуме будет показать - какой конечный результат вы хотите получить на выходе (просто ручками прописать конечный результат). Андрей VG, верно Вам ссылки указал: для различного варианта фильтраций можно использовать функции типа ALL(), ALLSELECTED(), ALLEXEPT(). В Вашем случае вариант такой (пример во вложении):
Код
CALCULATE(
   SUM([rev]);
      FILTER(
         ALLSELECTED('Календарь');
         'Календарь'[Date]<=MAX('Календарь'[Date])
         )
      )

П.С. и еще, даже если используете одну таблицу данных в Power Pivot или Power BI - всегда создавайте таблицу дат (календарь)
 
Спасибо за помощь и ссылки. Почитал, сделал, работает. Я в power bi неделю, а в DAX первый день. И это мои первые формулы, так что я пока туго соображаю как это работает.

Мне нужна еще одна мера. Rev за выбранный период (+ с учетом других фильтров) деленное на кумулятивный NDC за ВСЁ время (чтобы не работал фильтр время, но чтобы работали другие фильтры)
Код
Rev/NdcC = 
DIVIDE(
    SUM('conv'[rev]);
    CALCULATE(
       SUM('conv'[ndc]);
       FILTER(
          ALL('conv'[date]);
          'conv'[date]<=MAX('conv'[date])
       )
))

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

что хочу: http://prntscr.com/oy2stm
Изменено: AndrewRob - 27.08.2019 13:12:41
 
В посте №8 я использую функцию ALLSELECTED - смысл следующий: считать за все время, но с учетом фильтров, указанных внутри функции. Т.к. я внутрь указал весь календарь целиком, то мера будет учитывать все фильтры, связанные с календарем: дни, месяцы, годы и др.
Для вашего расчета NDC (если правильно понял) Вы можете так же использовать ALLSELECTED и внутри функции перечислить все таблицы или столбцы, которые нужно учитывать в фильтрации КРОМЕ столбца (таблицы) со временем.
 
Десятки раз перечитал Ваши сообщения и статьи. Все в голове перемешалось. По Вашей рекомендации не получается.
http://prntscr.com/oy3xpl

Судя по описанию функций мне нужно ALLEXCEPT
Синтаксис функции ALLEXCEPT(<Table>; <col1>; <col2>; …), где <coli> означает колонку, по которой не изменяют фильтр. Например, ALLEXCEPT(Sales; Sales[ProductKey]) – снять фильтры по всем столбцам таблицы Sales, кроме столбца [ProductKey].
Но с ним у меня тоже ни чего не получилось
 
приложите нормальный пример, в котором отражен текущий результат и какой хочется получить на выходе (руками пропишите конечный результат) - тогда решение Вам предложат намного быстрее. Примером могут быть реальные данные, но в пару десятков строк (конфед. данные можно изменить) или похожий по структуре придуманный на коленке
 
Спасибо. Все-таки ALLSELECT - оказался то что нужно
Код
Rev/NdcC = 
DIVIDE(
    SUM('conv'[rev]);
    CALCULATE(
       SUM('conv'[ndc]);
       FILTER(
          ALLSELECTED('conv');
          'conv'[date]<=MAX('conv'[date])
       )
)
)

Изменено: AndrewRob - 27.08.2019 15:24:19
Страницы: 1
Наверх