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