Как сделать месяца по порядку в power bi

Обновлено: 06.07.2024

Необходимо фильтровать исходный набор данных, на основе которого отображаются визуализации, по дате: 1. с начала текущего года 2. с начала текущего квартала 3. с начала текущего месяца.

В отчет должны попадать строки, даты которых после начала выбранного периода.

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

По отдельности задачи все понятны, но как это реализовать всё вместе в рамках функциональности Power BI - не понятно. Есть идеи?

Курс по Power BI Desktop

В этом курсе мы будем учиться использовать программу Microsoft Power BI в нашей работе. Не секрет, что такие знания сделают из вас настоящего лидера и помогут вам добиться успеха в вашей работе.

Урок 1. Введение. Установка Power BI Desktop на Windows и вид приложения

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

Прежде чем начинать работать с Power BI, вы должны обладать базовыми знаниями Excel. Если вы не совсем уверенны в своих знаниях, то мы настоятельно рекомендуем вам пройти наш курс по Microsoft Excel .

Power BI включает в себя множество инструментов, такие как: Power BI Pro, Power BI Premium, Power BI Mobile, Power BI Desktop и другие. В данном курсе мы рассмотрим именно Power BI Desktop, так как данный инструмент доступен для каждого, и устанавливается на ваш Windows бесплатно. Подчеркну еще раз, что Power BI Desktop работает только с Windows. Теперь давайте перейдем непосредственно к установке программы.

Урок 2. Источники в Power BI Desktop. Импорт данных из Excel и CSV файлов

Урок 3. Подключение к базе данных в Power BI. Импорт таблиц из интернета

Большинство данных корпоративного уровня не хранятся в Microsoft Excel или в файлах CSV. Они чаще всего хранятся в Базе Данных. И чтобы получить к ней доступ, вы должны знать необходимые параметры.

Урок 4. Редактирование таблиц и данных в Power Query

Редактор Power Query — это отдельный инструмент, входящий в состав PowerBI. Возможно, вы знакомы с этим инструментом из Microsoft Excel, где он также используется.

Урок 5. Порядок и принцип редактирования данных в Power BI. Отмена свертывания столбцов

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

Урок 6. Объединение данных из нескольких таблиц

В этом и следующем уроке мы собираемся использовать инструменты формирования данных Power BI Desktop для создания модели. Она включает в себя несколько таблиц, и я сейчас попытаюсь вам объяснить, чего мы пытаемся достичь.

Урок 7. Создание связи между таблицами. Построение единой модели

Урок 8. Визуализация данных. Карта, диаграммы, гистограммы и текстовые данные

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

Урок 9. Фильтрация данных в отчетах Power BI

Урок 10. Как поделиться отчетом через сервер Microsoft, Microsoft Teams и электронную почту

Заключение

На этом мы будем заканчивать данный урок и сам курс по Power BI Desktop. Очень надеемся, что вы открыли для себя что-то новое и будете применять данное приложение в своей профессиональной жизни. Мы желаем вам удачи и увидимся с вами в следующих курсах.

Как и обещал, начинаю делиться с вами полезными случаями из практики.

Довольно часто возникает потребность в том, чтобы при выборе даты в срезе, выводились данные, которые являются "активными" на эту дату. То есть дата среза должна быть между датой 1 (начала действия) и датой 2 (окончания).

Дано: список контрактов, у каждого есть дата начала и дата окончания. В дашборд вынесен срез (slicer) по дате, который взят из справочника и фильтрует разные таблицы и графики на листе.

Задача: Вывести в таблицу все активные контракты за выбранный месяц. То есть, если в срезе мы выбираем сентябрь 2020, то в таблице должны отразиться все контракты, которые были открыты до сентября (включительно) и закрыты после сентября.

На первый взгляд, задача простая. Вы можете установить связь между календарем и таблицей "Контракты" по дате закрытия. Однако в этом случае, вы получите только те контракты, который были закрыты в выбранном месяце. Это не то, что нам нужно.

Есть еще вариант - установить 2 среза: один по дате открытия контракта, второй по дате закрытия. Но, во первых, это не удобно, во вторых это дополнительный срез, которые будет "болтаться" на листе. Напомню, что по условиям задачи у нас есть другие данные, на которые влияет срез по дате.

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

У функции SELECTEDVALUE есть пара особенностей:

1) В том виде, в котором я ее применил, она не будет работать, если вы выбираете несколько месяцев. Это также решаемая проблема, но не в рамках данной статьи. В данном случае, мы настраиваем срез так, чтобы можно было выбрать только один месяц.

2) SELECTEDVALUE не работает в столбце таблицы. Нам ничего не мешает ее туда вписать, но она не будет показывать выбранное значение среза. Это связано с особенностями обновления данных, формулы в таблицах не пересчитываются при изменении значений среза. Она работает только в мере.

Второй пункт создает нам проблемы, так как было бы удобно создать дополнительный столбец и сравнить каждую строчку таблицы с выбранным значением среза. С другой стороны мера не умеет работать со столбцом без функций - агрегаторов. Значит будем использовать агрегатор, в качестве функции агрегатора выберем SUMX . Особенность функции SUMX заключается в том, что она считает таблицу построчно, запоминает посчитанное для каждой строки значение в виртуальной памяти, а затем суммирует эти значения. Ключевое слово - построчно .

Но сначала нужно доработать календарь. Добавим в него столбец с концом месяца. Далее будем сравнивать даты начала и окончания контракта с концом месяца. Это позволит нам включить в таблицу те контракты, которые начались до 30/31 числа выбранного месяца и закончились после 30/31 (то есть уже в след. месяце). Сделать это очень просто, достаточно использовать функцию ENDOFMONTH

Далее обернем SELECTEDVALUE в SUMX . Пишем формулу:

Попробую поэтапно объяснить написанную формулу:

1 Функция FILTER фильтрует таблицу "Contracts" по указанным правилам, а именно: дата открытия контракта должна быть меньше или равно концу месяца, который выбрали в срезе + дата закрытия должна быть больше чем конец месяца, который выбрали в срезе.

2 Функция SUMX в качестве первого параметра принимает таблицу, которая уже отфильтрована функцией FILTER. В качестве второго параметра можно указать любое числовое значение. Я сделал дополнительный столбец с номером месяца. Логика такая: SUMX получает нужную нам таблицу с контрактами, которые активны в выбранный месяц, далее SUMX проходит по каждой строке таблицы, запоминает значение NUMBER и в итоге суммирует все значения.

3 Функция IF тут нужна, чтобы разделить активные и неактивные контракты. Я это сделал через сравнение SUMX с нулем. Таким образом, если вы выберете на срезе месяц, в котором нет активных контрактов, функция FILTER вернет пустую таблицу, SUMX будет нечего суммировать и она вернет ноль, а IF вернет "no"

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

Ну и заключительная часть нашей работы: выносим нашу меру в фильтры отчета, выбираем "содержит" и пишем "Yes".

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

Вот три исходных дашборда. Все данные фейковые и случайные, картинки публикуются с разрешения Владимира.




Дальше я подробно пройдусь по правилам, которые были нарушены и с помощью которых можно улучшить дашборд.

Выравнивание по центру


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

Правило контраста и иерархии


Вся типографика на дашборде должна подчиняться правилам иерархии. Самым большим элементом должен быть заголовок дашборда, затем заголовки блоков и т. п.

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


Правило близости, правило внутреннего и внешнего


Фильтры без аналитики


Очень частый пример того, что фильтры в дашбордах используются не на полную мощность. Если вы даете пользователю просто фильтры или кнопки, вы не помогаете ему выбрать значение фильтра — он должен заранее знать, что он хочет посмотреть. Или начать перещёлкивать фильтры, пытаясь запомнить значения графиков, чтобы сравнить их между собой. Вместо этого я обожаю применять мини бар-чарты, которые можно кликать и они будут работать как фильтры, но при этом они будут давать возможность сравнивать значение метрики между срезами ещё даже ничего не выбрав. Можно показывать, например, значение за последний период или усреднение по всем периодам.

Применив принципы, которые описал выше, у меня получился вот такой результат:


Power BI vs Tableau

Я занимался только версткой и оформлением, поэтому сравню именно эти аспекты.

Сам подход к верстке — отличается координально. С одной стороны, в Power BI, он гораздо более прост и привычен — полное ощущение, что работаешь с Power Point. А с другой, сразу ставит крест на нормальной адаптивности под разные экраны ноутбуков. Табло в этом плане круче.

Настройки оформления в Power BI сейчас довольно обширные (последний раз я трогал его года три назад), позволяют закрыть большинство кейсов. Мне только не хватило возможности настраивать внутренние паддинги для блоков. И вынесло мозг, что нельзя поменять цвет только части текста в строке.

Ещё выписал для себя список фич, которым прям позавидовал:
— Офигенные фильтры, которые при снятии всех галочек догадываются, что нужно показывать всё. Это очень удобно
— Крутая визуализация для факторного анализа (дерево метрик). Я такую в Табло два месяца делал, а тут бац и в два клика =(
— Копи-паст форматирования работает шикарно, а не как в Табло
— Группировки блоков на дашборде с помощью одной кнопки. Какой же кайф!
— Очень неплохие бар-чарт таблицы с правильным выравниванием цифр
— Можно вставить нормально ссылку в текст
— Умные подписи внутри тримапа при иерархии

Выводы

У меня есть данные года и номер месяца в моих данных. Как с помощью DAX я могу получить имя месяца из месяца?

В SSRS это очень легко. Но как добиться этого с помощью DAX?

enter image description here

enter image description here

Вы можете использовать:

result

Ничего необычного, просто реконструкция фальшивой даты с предоставленного месяца, и переформатируйте ее с помощью функции FORMAT .

Конечно, в качестве альтернативы вы можете пойти старомодным способом и написать инструкцию SWITCH и жестко закодированную за 12 месяцев. Это вам.

Читайте также: