Хитрость №2. Проектирование DWH и кубов на MS SQL/SSAS: оптимизируем процессинг DC-групп мер

добавлено: 20 мар 12
понравилось:0
просмотров: 3040
комментов: 1

теги:

Автор: Критик

Когда мы создаем в SSAS меру типа distinct count, она по-умолчанию создается в новой группе мер, причем метаданные источника данных копируется из исходной группы мер. То есть, если исходная группа мер содержала в себе 50 секций, то определения(запросы) этих секций абсолютно таком же виде скопируются в новую группу мер.

Удобно? На первый взгляд да.

Но в некоторых случаях начинаются проблемы при процессинге: для новосозданных секций он идет очень-очень долго. Часто в разы дольше, чем обрабатываются секции исходной группы мер.

Почему так происходит?

Первый момент: если запустить Profiler, то можно увидеть, что запрос, поступающий в хранилище, содержит сортировку по тому полю, по которому построена distinct count-мера. Построением нужного индекса можно существенно ускорить такой запрос. Этот момент очевиден и применяется достаточно часто.

Второй момент: напомню, что distinct count-секции генерируются на основе секций некоторой исходной группы мер. А эти исходные секции часто основаны на представлениях. Вот тут-то и зарыта собака.
Рассмотрим на примере: куб "Продажи" с данными о себестоимости товаров, пусть здесь в качестве источника данных выступает преставление, в котором факты продаж джойнятся с табличкой себестоимости товара. Это значит, что СУБД должена сначала выполнить объединение данных, затем их отсортировать, причем эта самая себестоимость в данном случае нам фактически не нужна! А если она не нужна, то от нее стоит избавится и взять в качестве источника сразу таблицу продаж, а не автоматически сгенерированное представление. То есть стоит чуть-чуть поработать руками и заменить в источник данных для этой группы мер.

Этот подход может в разы увеличить скорость процессинга, особенно на кубах, содержащих несколько distinct count-мер.

Комментарии


  • 02 ноября 2012, 21:45 dwh_etl_developer

    В идеале еще сделать
    -DC строить на интовом поле
    -индекс на поле по которой делается DC с включением полей ключей дименшенов
    -сделать вьюхи под DC меру с разбивкой по полю на котором строится DC



Необходимо войти на сайт, чтобы оставлять комментарии