SlideShare a Scribd company logo
How to optimize Tabular model in PowerPivot or in
Analysis Services Tabular
Anastasiya Kaminskaya
Analyst at Preply.com
О чем пойдет речь?
● Рассмотрим базовую архитектуру SSAS Tabular model (In-memory)
● Поговорим про основные проблемы построения моделей
● Разберем 8 полезных советов по оптимизации моделей
● Рассмотрим результаты оптимизации на примере.
Anastasiya Kaminskaya "How to optimize Tabular model in PowerPivot or in Analysis Services Tabular"
- Колоночная структура (columnar structure)
- Сжатие данных
- Все данные “копируются” в табличную модель
- Все DAX функции доступны (в отличии от Direct Query mode)
SSAS Tabular model (In-memory Mode)
In-memory columnstore technology
Совет 1: Определяемся с гранулярностью данных
Гранулярность = уровень детализации данных
Отвечаем на вопросы насколько детализированные данные нам нужны для модели:
● Нужен ли нам срез по определенному покупателю или достаточно по категории
покупателей
● Нужен ли нам срез по каждому наименованию товаров или только по
подкатегориям, или вообще категориям товаров
● Нужно ли нам знать точное время, или достаточно только дня, недели, месяца и
Совет 1: Определяемся с гранулярностью данных
Преимущества высокой гранулярности данных:
● Более детализированные данные -> возможность извлечь более
глубокие инсайты из данных
● С высокой гранулярности проще перейти к более низкой
Недостатки высокой гранулярности данных:
● Модель занимает больше памяти
● Время на обработку запросов увеличивается
● Низкий порог сжатия данных
Совет 2: Определяемся с полнотой данных
● Убираем невостребованные столбцы (который нам не понадобятся в
вычислениях) в PowerQuery или в SQL
● Отфильтровываем лишние строки. (Например, данные о
пользователях, не совершивших покупку)
Совет 3: Уменьшаем количество уникальных значений в столбце
● Убираем колонки с id юзеров и транзакций (по максимуму насколько это
возможно)
● Убираем итоговые колонки с счетными метриками. Взамен используем DAX
формулы для их расчета.
● Дату и время разносим в разные колонки
Совет 3: Уменьшаем количество уникальных значений в столбце
● Разбиваем столбцы с большими числами на несколько. Например, если нам
необходимо хранить id транзакции, то разбиваем его на 2 диапазона:
количество тысяч и остаток.
Совет 4: Используем сортировку в столбце
Стараемся выбрать сортировку в столбце таким
образом, чтобы одинаковые значения были как
можно ближе друг к другу.
Таким образом уменьшаем таблицу с индексами
для нашего словаря.
Совет 5: Денормализация данных
Стараемся избегать связей между
большими таблицами. Например:
● Данные о заявках и покупках в
одну фактическую таблицу.
● Данные о заявках и регистрации
пользователей.
● И т.д
Совет 5: Денормализация данных
Используем VertiPaq Analyzer для поиска наиболее тяжелых связей.
Совет 5: Денормализация данных
Преимущества денормализации данных:
● Чем меньше “тяжелых” связей между таблицами, тем выше скорость
обработки запросов
Недостатки денормализации данных:
● Теряем правильную удобную структуру данных
● Можно столкнуться с перебором по денормализации
● Тяжело перейти к другой гранулярности
Совет 6: Стремимся к Star schema
Может быть несколько фактических таблиц, связанных между собой таблицами
параметров.
Совет 7: DAX. Используем Related и Lookup как можно реже
Для больших таблиц использование связей между таблицами и создание
вычислительных колонок значительно утяжеляет модель данных.
Если модель построена правильно, то потребность в данных формулах
возникает намного реже.
Совет 8: Упрощаем DAX метрики и замеряем скорость расчета
Основные подходы:
● Для более сложных метрик создаем внутри метрик переменные
(если есть возможность)
● Тестируем разное написание формул используя DAX Studio
Замеряем performance
Размер модели уменьшился в 2 раза.
Время, затраченное на выполнение запросов, в среднем уменьшилось в 2,5 раза
Загрузка CPU уменьшилось в 4,5 раза.
Спасибо за внимание!
Вопросы? :)
fb: anastasiya.kaminskaya

More Related Content

More from DataConf (9)

PPTX
Sergiy Lunyakin "Cloud BI with Azure Analysis Services"
DataConf
 
PPTX
Sergiy Lunyakin "Azure SQL DWH: Tips and Tricks for developers"
DataConf
 
PPTX
Eugene Polonichko "Azure Data Lake: what is it? why is it? where is it?"
DataConf
 
PDF
Taras Firman "How to build advanced prediction with adding external data."
DataConf
 
PPTX
Juriy Zaletsky "Використання Encog для прогнозування коливання курсів валют"
DataConf
 
PPTX
Oles Petriv "Semantic image segmentation using word embeddings."
DataConf
 
PPTX
Vitalii Bashun "First Spark application in one hour"
DataConf
 
PPTX
Vitalii Bondarenko "Machine Learning on Fast Data"
DataConf
 
PDF
Volodymyr Getmanskyi "Deep learning for satellite imagery colorization and di...
DataConf
 
Sergiy Lunyakin "Cloud BI with Azure Analysis Services"
DataConf
 
Sergiy Lunyakin "Azure SQL DWH: Tips and Tricks for developers"
DataConf
 
Eugene Polonichko "Azure Data Lake: what is it? why is it? where is it?"
DataConf
 
Taras Firman "How to build advanced prediction with adding external data."
DataConf
 
Juriy Zaletsky "Використання Encog для прогнозування коливання курсів валют"
DataConf
 
Oles Petriv "Semantic image segmentation using word embeddings."
DataConf
 
Vitalii Bashun "First Spark application in one hour"
DataConf
 
Vitalii Bondarenko "Machine Learning on Fast Data"
DataConf
 
Volodymyr Getmanskyi "Deep learning for satellite imagery colorization and di...
DataConf
 

Anastasiya Kaminskaya "How to optimize Tabular model in PowerPivot or in Analysis Services Tabular"

  • 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 полезных советов по оптимизации моделей ● Рассмотрим результаты оптимизации на примере.
  • 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 раза.

Editor's Notes

  • #4: Самая главная ошибка при построении модели - это просто перенести все таблицы из БД SQL или других источников в PowerBI или PowerPivot без каких либо изменений
  • #5: SQL Server Analysis Services (SSAS)
  • #7: Добавить пример
  • #10: Разделить на 2 слайда
  • #11: Разделить на 2 слайда