Каков наилучший способ моделирования рваной иерархии в SSAS для ROLAP и MOLAP?

В настоящее время я пытаюсь смоделировать неровную иерархию в 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 ответ

Решение

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

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 потому что их легче увидеть, когда я пролистываю записи. Но это вещь предпочтения.

Другие вопросы по тегам