Модель SSAS хранит копию данных из хранилища. Чтобы в отчётах появились вчерашние продажи, модель нужно обработать (process) — перечитать данные и пересчитать всё, что от них зависит. От того, как настроена обработка, зависит, насколько свежие данные видят пользователи и не тормозит ли сервер днём.
Что происходит при обработке
Для табличной модели обработка состоит из двух частей:
- Загрузка данных — SSAS выполняет запросы к хранилищу и сжимает результат в колоночный формат.
- Пересчёт — строятся вычисляемые колонки и таблицы, связи и иерархии.
Пока идёт обработка, пользователи продолжают работать со старой версией данных. Новая подменяет старую одним коротким переключением в конце. Поэтому серверу нужна память и на рабочую копию, и на обрабатываемую: при полной обработке — примерно вдвое больше, чем занимает модель.
Основные режимы
| Режим | Что делает | Когда использовать |
|---|---|---|
| Full | Загружает данные заново и всё пересчитывает | Первая загрузка, изменения в структуре модели |
| Data | Только загружает данные, без пересчёта | Обновление нескольких таблиц с последующим Recalc |
| Recalc | Только пересчитывает зависимые объекты | После серии Data |
| Default | Обрабатывает то, что ещё не обработано | Подстраховка после развёртывания |
| Add | Добавляет новые строки в секцию | Догрузка свежих фактов без перечитывания старых |
| Clear | Очищает данные объекта | Освобождение памяти, подготовка к перезагрузке |
Секции: не перечитывать всё каждый раз
Таблица фактов за пять лет может занимать сотни миллионов строк. Перечитывать её целиком каждую ночь долго и бессмысленно: прошлые годы не меняются. Поэтому большую таблицу делят на секции (partitions), например по месяцам, и ежедневно обрабатывают только текущий и прошлый месяц.
Обработку обычно запускают командой на языке TMSL (для табличной модели) из задания SQL Server Agent сразу после загрузки хранилища:
{
"refresh": {
"type": "full",
"objects": [
{ "database": "Sales", "table": "Продажи", "partition": "Продажи 2025-11" },
{ "database": "Sales", "table": "Продажи", "partition": "Продажи 2025-10" }
]
}
}
Как часто обрабатывать
Чаще всего хватает одной обработки в сутки, ночью, после загрузки хранилища. Если бизнесу нужны данные внутри дня, есть варианты:
- обрабатывать только текущую секцию каждый час;
- вынести оперативные данные в отдельную таблицу в режиме DirectQuery;
- разделить модель на «историческую» и «оперативную».
Каждый вариант добавляет нагрузку и сложность, поэтому начинаем с вопроса «насколько свежими должны быть данные на самом деле?». Часто ответ звучит как «на утро вчерашнего дня», и сложная схема не нужна.
Обработка должна быть частью общего расписания: сначала загрузка хранилища, затем проверка, что загрузка прошла успешно, и только потом обработка модели. Иначе пользователи утром увидят половину вчерашнего дня и решат, что продажи упали.