http://dataconf.com.ua/anastasiya-kaminskaya.php
Topic of presentation: How to optimize Tabular model in PowerPivot or in Analysis Services Tabular
The main points of the presentation:
Tabular approach for creating BI Semantic Model for SQL Server Analysis Services. Methods of optimizing the memory used by a Tabular model in PowerPivot or in Analysis Services Tabular. Some examples of data model perfomances in PowerPivot
http://dataconf.com.ua/index.php#agenda
#dataconf
#AIBDConference
Ai big dataconference_jeffrey ricker_kappa_architecture
Ai big dataconference_anastasiya kaminskaya_how to optimize tabular model in powerpivot
1. How to optimize Tabular model in PowerPivot or in
Analysis Services Tabular
Anastasiya Kaminskaya
Analyst at Preply.com
2. О чем пойдет речь?
● Рассмотрим базовую архитектуру SSAS Tabular model (In-memory)
● Поговорим про основные проблемы построения моделей
● Разберем 8 полезных советов по оптимизации моделей
● Рассмотрим результаты оптимизации на примере.
3.
4. - Колоночная структура (columnar structure)
- Сжатие данных
- Все данные “копируются” в табличную модель
- Все DAX функции доступны (в отличии от Direct Query mode)
SSAS Tabular model (In-memory Mode)
6. Совет 1: Определяемся с гранулярностью данных
Гранулярность = уровень детализации данных
Отвечаем на вопросы насколько детализированные данные нам нужны для модели:
● Нужен ли нам срез по определенному покупателю или достаточно по категории
покупателей
● Нужен ли нам срез по каждому наименованию товаров или только по
подкатегориям, или вообще категориям товаров
● Нужно ли нам знать точное время, или достаточно только дня, недели, месяца и
т.д
7. Совет 1: Определяемся с гранулярностью данных
Преимущества высокой гранулярности данных:
● Более детализированные данные -> возможность извлечь более
глубокие инсайты из данных
● С высокой гранулярности проще перейти к более низкой
Недостатки высокой гранулярности данных:
● Модель занимает больше памяти
● Время на обработку запросов увеличивается
● Низкий порог сжатия данных
8. Совет 2: Определяемся с полнотой данных
● Убираем невостребованные столбцы (который нам не понадобятся в
вычислениях) в PowerQuery или в SQL
● Отфильтровываем лишние строки. (Например, данные о
пользователях, не совершивших покупку)
9. Совет 3: Уменьшаем количество уникальных значений в столбце
● Убираем колонки с id юзеров и транзакций (по максимуму насколько это
возможно)
● Убираем итоговые колонки с счетными метриками. Взамен используем DAX
формулы для их расчета.
● Дату и время разносим в разные колонки
10. Совет 3: Уменьшаем количество уникальных значений в столбце
● Разбиваем столбцы с большими числами на несколько. Например, если нам
необходимо хранить id транзакции, то разбиваем его на 2 диапазона:
количество тысяч и остаток.
11. Совет 4: Используем сортировку в столбце
Стараемся выбрать сортировку в столбце таким
образом, чтобы одинаковые значения были как
можно ближе друг к другу.
Таким образом уменьшаем таблицу с индексами
для нашего словаря.
12. Совет 5: Денормализация данных
Стараемся избегать связей между
большими таблицами. Например:
● Данные о заявках и покупках в
одну фактическую таблицу.
● Данные о заявках и регистрации
пользователей.
● И т.д
13. Совет 5: Денормализация данных
Используем VertiPaq Analyzer для поиска наиболее тяжелых связей.
14. Совет 5: Денормализация данных
Преимущества денормализации данных:
● Чем меньше “тяжелых” связей между таблицами, тем выше скорость
обработки запросов
Недостатки денормализации данных:
● Теряем правильную удобную структуру данных
● Можно столкнуться с перебором по денормализации
● Тяжело перейти к другой гранулярности
15. Совет 6: Стремимся к Star schema
Может быть несколько фактических таблиц, связанных между собой таблицами
параметров.
16. Совет 7: DAX. Используем Related и Lookup как можно реже
Для больших таблиц использование связей между таблицами и создание
вычислительных колонок значительно утяжеляет модель данных.
Если модель построена правильно, то потребность в данных формулах
возникает намного реже.
17. Совет 8: Упрощаем DAX метрики и замеряем скорость расчета
Основные подходы:
● Для более сложных метрик создаем внутри метрик переменные
(если есть возможность)
● Тестируем разное написание формул используя DAX Studio
18. Замеряем performance
Размер модели уменьшился в 2 раза.
Время, затраченное на выполнение запросов, в среднем уменьшилось в 2,5 раза
Загрузка CPU уменьшилось в 4,5 раза.
Самая главная ошибка при построении модели - это просто перенести все таблицы из БД SQL или других источников в PowerBI или PowerPivot без каких либо изменений