Как лучше всего смоделировать неровную иерархию в SSAS как для ROLAP, так и для MOLAP?

StackOverflow https://stackoverflow.com/questions/1122979

  •  13-09-2019
  •  | 
  •  

Вопрос

В настоящее время я пытаюсь смоделировать неровную иерархию в 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 моей иерархии насчитывает около 10 000 членов - SSAS выходит на обед в связи с расширением.

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

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

Это было полезно?

Решение

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

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 что указывало на это.Существует длинный список причин использовать целые числа, но для родительского/дочернего элемента вам следует использовать идентификатор в качестве ключевого столбца, а затем добавить ItemKey как атрибут/связь с указанным ключевым столбцом.Затем вы можете заказать Item (отсутствует в этой схеме) по Attribute Key и выберите ItemKey.Вы также можете выбрать, показывать ли это свойство пользователю.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top