DWH-ETL-OLAP
July 23, 2019
SSAS Tabular: Processing
https://www.wiseowl.co.uk/blog/s2484/processing-theory.htm
1й подход - Process Full - процессинг происходит в отдельной транзакции, не затрагивающей исходную модель. Т.е. пользователи могут пользоваться исходной моделью до конца процессинга, загрузка и процессинг происходит в "параллеkьную модель", а в момент завершения происходит подмена старой модели на новую.
Но в этом случае требуется чуть более двойного обьема оперативной памяти на модель.
Второй подход:
- шаг 1 - Process Data на каждой таблице
- шаг 2 - Process Recalc на БД
Выигрываем по оперативной памяти, но у пользователей скорее всего не будет доступа к модели между шагом 1 и 2.
Оптимизация процессинга
- Партиционирование и процессинг только партиций с актуальными данными
- Исключение столбцов с уникальными значениями и высокой степенью уникальности
- Предварительная сортировка данных по наименее уникальному столбцу
- Избегать вычисляемых столбцов, ибо они повышают степень уникальности значений относительно исходных столбцов
- Избегать Datetime столбцов
- Если идшник фактов нужен - разделять его на группы разрядов: тысячи и остальное
Более фундаментальный труд: Whitepaper on modeling for AS tabular scalability
Измерения:
- Минимизиуруем количество столбцов и строк. Строки в измерениях оставляем только те, по которым есть факты.
- Снижаем мощность столбцов всеми силами
- Указать тип данных у колонок с минимально возможной точностью для числовых полей
- SK
- Интовые sk
- Сортировка по sk
- Установка свойств Скрыто=Да, Уникальные=Да, ДопускающийNuill=Нет, Уникальный=Да
- Для всех числовых полей устанавливается свойство EncodingHints = Значение(VALUE). Особенно для sk. (Свойство доступно начиная с 2017й версии)
- Устанавливаем свойство IsAvailableInMdx = Да только для тех полей, по которым будем проводить анализ, вытаскивать в сводную и тд. Т.е. в измерениях это свойство необходимо отключить для sk.
Факты:
- интовые fk к измерениям
- Снижаем мощность
- Вычисляемые столбцы -
- не создаются, если будет соответствующая мера
- если все таки нужен выч столбец, то он делает на уровне источника
- Сортировка фактов по минимально мощным ключам измерения
- Указать тип данных у колонок с минимально возможной точностью для числовых полей
- Для всех числовых полей устанавливается свойство EncodingHints = Значение(VALUE). (Свойство доступно начиная с 2017й версии)
- Устанавливаем свойство IsAvailableInMdx = Нет для всех колонок в фактах (как для fk, так и для значений), за исключением тех колонок, которые выступают как атрибут "измерения фактов", если такие есть.