Обратная связь
Введите ваши данные, и я свяжусь с вами!
Какой у вас вопрос?

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c обработкой персональных данных

Оптимизация модели в Power BI, объем уменьшен в 3 раза

Материал обновлен 29:12:2022

Разберем кейс оптимизации модели Power BI

Исходные данные

В качестве исходных данных имеем файл отчета Power BI объемом 3,7 Gb, задача найти способ уменьшить его объем, что также должно повлиять на скорость работы модели данных, снизить затраты на хранилище данных:

Исходный объем модели

Объем файла и памяти для модели отличается, далее имея ввиду размер файла я буду на этой указывать явно, иначе речь про объем модели в памяти.

Что сделано

Начать оптимизацию я решил с поиска самой большой таблицы, той, которая содержит наибольшее количество информации. После того, как она была определена приступил к поиску связей и зависимостей других таблиц и мер от нее. Было установлено, что найденная таблица в модели присутствует дважды. Причем в одном случае она «просто есть», не неся никакой функциональной нагрузки (не связана с другими, на ее основе нет расчетов в мерах):

Таблица без связей

Удалив ее, я получил существенное уменьшение объема модели данных:

После удаления таблицы объем модели уменьшился

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

Объемная таблица в модели имеет связь с другой и содержит меры

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

В таблице funnelSessionID столбец sessionId имеет тип строка и содержит уникальные значения, на текущий момент оптимизации он занимает более половины всего объема памяти, необходимой для модели данных:

Данные по столбцу в модели данных

Решение простое, на уровне хранилища данных выполним оптимизацию. Объединим таблицу traffic и funnelSessionId с помощью SQL запроса, там-же получим агрегированные данные. Таким образом несколько увеличится объем таблицы traffic, но мы полностью избавимся от funnelSessionId.

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

Изменения в размере файла

Размер модели после оптимизации

Заключение

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

Рассылка бесплатных кейсов, инструкций, обзоров
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности
Ежедневные новости из мира аналитики в Telegram канале
Настройки, интеграции, примеры реальных задач, пошаговые инструкции
материалы ПО ТЕМЕ:
ОБСУЖДЕНИЕ:
Оставить комментарий
Для добавления комментария — заполните форму!

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c обработкой персональных данных