Каков наилучший способ моделирования рваной иерархии в SSAS для ROLAP и MOLAP? - PullRequest
2 голосов
/ 14 июля 2009

Я сейчас пытаюсь смоделировать неровную иерархию в SSAS, и я застрял.

Сначала я пытался смоделировать это так:

ItemKey,Level0Key,Level1Key,Level2Key
Item1,Lvl0-1,Lvl1-1,Lvl2-1
Item2,Lvl0-1,Lvl1-1,Lvl2-1
Item3,Lvl0-1,Lvl1-1,Lvl2-2
**Item4,Lvl0-1, , ** 

Где последняя строка в этом примере имела пробелы для «пропущенных» уровней.

Здесь ROLAP удалось правильно интерпретировать иерархию, но режим MOLAP привел к неправильной классификации элементов из таблицы фактов, поэтому агрегации были отключены.

Затем я изменил его на это на основе примера SalesTerritory AdventureWorksDW, который представлял собой неровную иерархию:

ItemKey,Level0Key,Level1Key,Level2Key
Item1,Lvl0-1,Lvl1-1,Lvl2-1
Item2,Lvl0-1,Lvl1-1,Lvl2-1
Item3,Lvl0-1,Lvl1-1,Lvl2-2
**Item4,Lvl0-1,Item4,Item4** 

Я использую HideIfOnlyChildAndSameNameAsParent, чтобы скрыть участников.

Теперь числа MOLAP выстраиваются в ряд, но на земле ROLAP у меня серьезные замедления, потому что на уровне 1 моей иерархии около 10000 членов - SSAS отправляется на обед на расширение.

Так что, очевидно, я что-то упускаю, но я не видел много примеров «правильного» способа построения рваной иерархии.

Спасибо за любые ответы.

1 Ответ

3 голосов
/ 20 июля 2009

Как правило, «рваная иерархия» для меня является непосредственным переводом на «родитель-ребенок». Вы бы хотели, чтобы все было так:

ItemID    ItemKey    ParentID
1         Lvl0-1     null
2         Lvl1-1     1
3         Lvl2-1     2
4         Lvl2-2     2
5         Item1      3
6         Item2      3
7         Item3      4
8         Item4      1

SSAS сгенерирует этого Родителя / Дитя для вас, как только вы сообщите ему, что такое ParentID. Скорее автоматик. Кроме того, здесь я использовал ItemID в качестве суррогатного ключа и использовал ParentID, который указал на это. Существует длинный список причин для использования целых чисел, но для Parent / Child то, что вы должны сделать, это использовать идентификатор в качестве столбца Key, а затем добавить ItemKey в качестве атрибута / отношения к указанному ключевому столбцу. Затем вы можете заказать Item (отсутствует в этой схеме) по Attribute Key и выбрать ItemKey. Вы также можете выбрать, показывать ли это свойство пользователю.

SSAS по умолчанию предполагает, что null или самореферентный родительский ключ является корневым узлом. Я обычно использую null, потому что мне легче видеть, когда я пролистываю записи. Но это вещь предпочтения.

...