Простой план-фактный анализ в PowerBI Public Preview. Часть первая – консолидация и очистка данных

от автора

Всем привет! Сегодня хочу рассказать про построение простого дашборда с план-фактным анализом доходов и расходов в Power BI Designer Preview и Power BI. В первой части рассмотрим работу с запросами, научимся объединять данные из нескольких источников и выполнять их очистку.

Исходные данные: несколько файлов Excel в которых хранится информация о показателях доходов и расходов компании за некоторое время. Поскольку форма отчетов и статьи учета несколько раз менялись, то листы с информацией имеют похожую, но не совсем одинаковую структуру. На выходе требуется получить нечто, что позволит руководителям получить представление о том, что происходит с финансами компании
Давайте посмотрим, как Power BI Designer Preview (в ближайшем будущем Power BI Desktop) позволит объединить данные и их визуализировать.

При запуске Power BI Designer просит указать источник данных или выбрать один из недавних источников. Кстати, по поводу источников – возможно подключение к большому их количеству, включая онлайн и локальные источники. Например, Google Analytics. В нашем случае все отчеты хранятся в одной папке, поэтому выберем в качестве источника «Folder». Такой выбор позволит в дальнейшем добавлять новые отчеты в эту папку и подгружать их данные для анализа нажатием кнопки «Обновить».

Стартовое окно Power BI Designer
Рисунок 1. Стартовое окно Power BI Designer

Выбор источника данных
Рисунок 2. Выбор источника данных

В Power BI Designer существует два основных режима работы – Report (предназначен для разработки визуальных отчетов) и Query (в этом режиме выполняется очистка и подготовка данных для использования в отчетах). По умолчанию открывается режим Report, этому требуется перейти в режим Query.

Окно Power BI Designer
Рисунок 3. Окно Power BI Designer

Как видно на снимке экрана, Power BI Designer подгрузил файлы из папки и основную метаинформацию. Удалим все столбцы, кроме Content и Имя файла. Поскольку имя файла показывает, к какому году относится соответствующий отчёт, мы его для этого и используем.

Запрос к папке в Power BI Designer
Рисунок 4. Запрос к папке в Power BI Designer

Если я нажму на любую строку в столбце «Content», PowerBI Designer откроет мне содержимое соответствующей книги. Обратите внимание, что в разделе Query Settings все выполненные мной шаги записываются и я, при необходимости, могу их изменить или удалить. А если я перейду на вкладку View и кликну на Advanced Editor, то откроется окно, в котором будет виден программный код для всех выполненных мной действий. Да, Power BI Designer использует язык программирования “M”, точно такой же как и Power Query для Excel.

Расширенный редактор запросов
Рисунок 5. Расширенный редактор запросов

Поскольку меня интересует содержимое всех файлов Excel в папке, а не только одного, то я удалю два последних шага и использую некоторые функции языка “M” для парсинга содержимого книг Excel из папки.
Для этого я добавлю новый столбец, используя функцию Excel.Workbook, которая позволяет «извлекать» содержимое книг Excel. Новый столбец содержит в себе значения типа «Таблица», что позволяет мне «развернуть» его содержимое на несколько других столбцов.

Добавление пользовательского столбца
Рисунок 6. Добавление пользовательского столбца

Поскольку большинство «развернутых» столбцов не несет в данном случае смысловой нагрузки, то я удалю все, кроме «Name», «Data» и «Item». Столбец «Data» содержит в себе данные листов Excel, а «Name» и «Item» я в дальнейшем использую для временных отметок. После переименования и изменения порядка столбцов таблица принимает вид, показанный на рисунке

Подготовленный к развертыванию запрос
Рисунок 7. Подготовленный к «развертыванию» запрос

Затем я «развертываю» столбец Data и вижу содержимое всех файлов и листов Excel, при этом в виде, который непригоден для построения итоговой отчетности. Но я могу использовать возможности Power BI Designer Preview для очистки данных.

Запрос после развертывания содержимого файлов
Рисунок 8. Запрос после «развертывания» содержимого файлов

1. Использую верхние строки как заголовки и затем переименую столбцы. Удалю столбцы «Фактическое отклонение» и «Отклонение в %». В дальнейшем их пересчитаем.
2. Удалю строки, которые содержат пустые значения и значение «Показатель» в столбце «Показатель», применив фильтрацию. Таким же образом удалю строки, в которых содержатся суммарные значения, например «Итого ЧОД», «Итого» и т.д.

Меню фильтрации данных
Рисунок 9. Меню фильтрации данных

3. Используя функцию «Replace Values» выполню замену синонимов, например «Доход» и «Доходы».

Замена значений
Рисунок 10. Замена значений

4. Еще немного изучив содержимое столбца «Показатель» обнаруживаю, что все доходы у меня относятся к показателю «Доход» или «Доходы». Всё остальное относится к расходам, что сильно облегчает задачу. Для удобства дальнейшей обработки и фильтрации создам столбец «Категория», который будет содержать значение «Доход», если в столбце «Показатель» присутствует слово «Доход», а во всех остальных случаях примет значение «Расход».

Добавление столбца Категория
Рисунок 11. Добавление столбца «Категория»

5. Дальше, мне нужно указать, что тип значений в столбцах «План» и «Факт» — десятичное число. Но перед этим мне нужно удалить из содержимого этих столбцов пробелы.
6. После выполнения операции проверяю столбцы на наличие ошибок и отрицательных значений. Поскольку в нашем случае наличие отрицательного значения означает ошибку ввода, то используя функцию преобразования значений выделяю абсолютное значение в столбцах «План» и «Факт». На этом базовая очистка данных закончена.
7. Для того, чтобы отображать показатели с привязкой по времени требуется указать дату для каждой записи. В таблице содержится месяц в текстовом виде и год. Для удобства примем, что данные отображаются на конец каждого месяца. Здесь нас подстерегает проблема – язык «М» не позволяет на текущий момент конвертировать названия месяцев в даты. Поэтому потребуется сделать несколько промежуточных шагов.
8. Создадим новый запрос, который будет содержать названия месяцев и их номера. Для этого создаем пустой запрос, открываем расширенный редактор и вставляем следующий код:

let     Source = {"январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"},     #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),     #"Added Index" = Table.AddIndexColumn(#"Converted to Table", "Index", 0, 1),     #"Added to Column" = Table.TransformColumns(#"Added Index", {{"Index", each List.Sum({_, 1})}}),     #"Renamed Columns" = Table.RenameColumns(#"Added to Column",{{"Column1", "Месяц"}}) in     #"Renamed Columns" 

Добавление пустого запроса
Рисунок 12. Добавление пустого запроса

9. Перехожу в запрос «План-Факт» и объединяю запросы.

Объединение запросов
Рисунок 13. Объединение запросов

10. Данные из запроса «Месяцы» добавились как новый столбец. Раскрываю его и теперь у нас есть все данные для формирования даты. Создаю новый столбец с названием «Дата», используя формулу: =Date.EndOfMonth(#date([Год],[Index],1)) Столбец добавлен и он содержит последнее число каждого месяца. Для того, чтобы Power BI Designer мог группировать даты по месяцам и годам, нужно будет явно задать тип «Date»

Добавление столбца Дата
Рисунок 14. Добавление столбца «Дата»

Столбец Дата добавлен
Рисунок 15. Столбец «Дата» добавлен

11. Удалим столбцы Index, Год и Месяц. Они нам больше не нужны.

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

ссылка на оригинал статьи http://habrahabr.ru/post/262655/


Комментарии

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

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