Metrika

1 июня 2011 г.

Партицирование OLAP-кубов в SSAS 2008

В целях повышения производительности работы кубов в SSAS предусмотрена возможность разбиения групп мер на партиции. Вот так это выглядит в Management Studio:
При процессинге куба процессится только партиция Vw Sales By Products, две другие уже не процессятся, т.к. данные за эти периоды не меняются. При больших объемах данных партицирование может значительно уменьшить время процессинга, а так же уменьшит время обращения к кубу, особенно если партиции разнести по разным физическим носителям.
Создать партиции можно как в Management Studio, так и в BIDS. Рекомендую делать партиции в BIDS, т.к. если их сделать в Management Studio, т.е. на рабочем кубе, а не в проекте, то при следующем деплое куба все партиции удаляться.
Для создания партиций в BIDS необходимо в дизайнере куба открыть вкладку Partitions:












Здесь видно две группы мер Sales и Sales 1 и список их партиций. Для того, что бы разбить на партиции группу мер Sales, необходимо сначала изменить текущую партицию. Разбивать на партиции будем по дате продажи. Для этого в колонке Source для партиции жмем кнопку, которая появляется при получении этим полем фокуса ввода. Появиться окно:

 По умолчанию Binding type = Table Binding. Его надо изменить на Query Binding,  в окне появиться поле с SQL-запросом, который используется для обращения к базе при процессинге куба, с пустым условием WHERE. В условие надо добавить выражение для партицирования. Я хочу разбивать на партиции по дате продажи, текущая партиция будет процесситься каждый день, в условие я добавляю:
WHERE sale_date >= '2011-05-31'
Жмем OK. Текущая партиция создана. Далее необходимо создать партицию (или несколько партиций) для исторических данных. Предположим продажи есть только за 2011 год. Для создания партиции жмем ссылку New Partition. Появиться окно:


 Выбираем таблицу в поле Available tables. Появиться окно, где вводиться запрос, в нем чекаем галку Specify a query to restrict rows и в запросе пишем условие ограничения:

WHERE sale_date >= '2011-01-01' AND sale_date < '2011-05-31'
 Далее нажимаем Next, появиться окно где можно выбрать опцию Processing loaction (не знаю, что это, не разбирался) и Storage location (т.е. где будут физически лежать файлы для этой партиции). Далее нажимеам Next, появиться окно, где в поле Name вбиваем название партиции, например Vw Sales 2011, выбираем Design aggregations later и жмем Finish.
Все, после этого окно партиций примет такой вид:
 Далее деплоим и процессим куб. Далее, в повседневной работе куба,    процесим только партицию Vw Sales, т.к. данные будут обновляться только в ней.

2 комментария :

  1. Сделал как описано и куб упал :(
    1. сразу же ругаться начал что включено упреждающее кэширование для партиций, про актив вырубил у всех.
    2. далее больше, перестал процесситься начал говорить "Error 40 Ошибки модуля хранения OLAP: Ошибка при обработке секции "Обороты 2012 and more" группы мер "Обороты" для куба "Olap_Sales" из базы данных Olap_Sales. 0 0"

    ОтветитьУдалить
  2. Первую ошибку как то встречал, но не помню с чем она была связана и как полечить. А вторая может значить, что запрос не правильно составлен в партиции. Без живого куба сложно понять что к чему.

    ОтветитьУдалить