А чего добился ты? или waterfall чарт в PowerBI

Tweet about this on TwitterShare on Google+Share on Facebook

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

В успешных кейсах специалистов, часто можно встретить примерно такие графики или скрины с графика из Google Analytics.

Да, на них наглядно видно здесь больше там меньше — вот тренд, вот результат. Но на сколько процентов получился прирост? Получается как в том анекдоте про Петьку завалившего экзамен по математике на вопросе: "0,5 + 0,5 = ?"  "Ну нутром чую что литр будет, а как по математически выразить — не знаю"

 

 

 

waterfall chartВ PowerBI для решения этой задачи есть очень интересный график waterfall chart (название в английской версии интерфейса). В чем суть: каждый бар показывает динамику прироста или снижения, а последний итоговый бар показывает итоговый накопительный эффект. Результат наглядно представлен не только графически, но и в цифрах. Очень удобно.

Разберем как подготовить нужные данные и построить такой график. Предполагаю что вы уже разбираетесь в Power Pivot, Power Query поэтому без объяснений базовых вещей.

 

Нам нужны две переменные: по горизонтальной оси время — например год, месяц или неделя. А по вертикальной число сессий, транзакций или другой нужный вам показатель. Я разберу на примере транзакций. Исходная таблица должна быть в формате: дата — число транзакций. И для трех вариантов временных периодов — год, месяц, неделя. В каждом случае нам понадобится создать отдельный показатель. 

1. Для графика по годам. 

  • Посчитаем общее число транзакций за год  YTD Transactions = TOTALYTD(SUM(Analytics[Транзакции]),’Calendar'[Date]) Функции TOTALYTD передаются 2 параметра: сумма значений из столбца "Транзакции" в таблице "Analytics", а вторым параметром столбец с датами из таблицы Calendar
  • Подсчитаем сколько было транзакций за предыдущий год. LY YTD Transactions = CALCULATE([YTD Transactions],SAMEPERIODLASTYEAR(‘Calendar'[Date])) Здесь функции CALCULATE передаются 2 параметра: выражение для вычисления, подставляем созданную ранее метрику YTD Transactions, второй параметр выступает как фильтр — функция SAMEPERIODLASTYEAR указывает что для расчета нужно взять такой же период за предыдущий год
  • Вычисляем разницу в числе транзакций за текущий год по сравнению с предыдущим YTD Transaction Var = [YTD Transactions] — [LY YTD Transactions]
  • Вычисляем эту разницу в процентах. YTD Transaction Var % = DIVIDE([YTD Transaction Var],[LY YTD Transactions],0)

2. Для графика по месяцам. 

  • Сумма транзакций за месяц MTD Transaction = TOTALMTD(SUM(Analytics[Транзакции]),’Calendar'[Date])
  • Сумма транзакций за предыдущий месяц LM MTD Transaction = CALCULATE([MTD Transaction],DATEADD(‘Calendar'[Date],-1,MONTH)) Обратите внимание что здесь вторым параметром идет функция DATEADD, о которой я уже писал ранее, а не функция SAMEPERIODLASTYEAR как при расчете за год.
  • Разница в числе транзакций за текущий и предыдущий месяцы MTD Transaction Var = [MTD Transaction]-[LM MTD Transaction]
  • Разница в числе транзакций за текущий и предыдущий месяцы в процентах. MTD Transaction Var % = DIVIDE([MTD Transaction Var],[LM MTD Transaction],0)

3. Для графика по неделям.

  • Сумма тразакций за неделю. WTD Transactions = IF(HASONEVALUE('Calendar'[Номер недели]),CALCULATE(SUM(Analytics[Транзакции]),’Calendar'[Номер недели] = VALUES(‘Calendar'[Номер недели])))
  • Сумма транзакций за предыдущую неделю LW WTD Transactions = IF(HASONEVALUE('Calendar'[Номер недели]),CALCULATE(SUM(Analytics[Транзакции]),’Calendar'[Номер недели] = VALUES(‘Calendar'[Номер недели])-1))
  • Разница в числе транзакций за текущую и предыдущие недели WTD Transactions Var = [WTD Transactions]-[LW WTD Transactions]
  • Разница в числе транзакций за текущую и предыдущие недели в процентах WTD Transactions Var % = DIVIDE([WTD Transactions Var],[LW WTD Transactions],0)

Отличие метрик для данных по неделям в том что для расчета из таблицы календарь используется не дата, а номер недели. Это связано с тем что функция DATEADD может сдвигать дату только на год, квартал, месяц или день, а неделями не оперирует. Поэтому пришлось делать такое обходное решение. 

Создаем диаграмму waterfall chart

Но можно вывести и виде обычной таблицы.

Важно: Если в исходной таблице данные за несколько лет, то для недель с одним номером данные просумируются, чтобы из бежать этого используйте срез или timeline по году. 

Для графика по месяцам аналогично можно использовать номер месяца, однако в этом случае необходимо тоже смотреть данные только за один год, что может быть неудобно. Выходом является использование индекса месяца в формате "YYYY-MM". На первом графике в начале статьи используется именно такой способ. 

 

 

Related posts:

Tweet about this on TwitterShare on Google+Share on Facebook

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *