Как настроить динамические иерархии в OLAP - PullRequest
0 голосов
/ 22 октября 2011

В настоящее время я настраиваю двойное решение, и у меня возникают трудности с определением куба и его иерархий.

Часть определения схемы выглядит следующим образом:

<Dimension foreignKey="user" highCardinality="false" name="user">
  <Hierarchy name="user" hasAll="true" allMemberName="all" primaryKey="ID">
    <Table name="user" />
    <Level name="timezone" column="timezone"/>
    <Level name="locale" column="locale"/>
    <Level name="gender" column="gender"/>
    </Level>
  </Hierarchy>
</Dimension>

Теперь я хочу получить прямой доступ к гендерному уровню.

SELECT
{[user].[gender].Members} ON COLUMNS,
{[Measures].[Fact Count]} ON ROWS
FROM [cube]

В результате получается что-то вроде [user].[zone3].[de_DE].[male] = 10, [user].[zone1].[en_US].[male] = 30 и так далее. Я хочу общее количество для каждого пола: [user].[male] = 20 и [user].[female] = 30.

В общем, мне нужно гибкое упорядочение уровней. Это возможно? Я знаю, что есть параллельные иерархии, но я не могу создать их для каждого возможного порядка ...

Я также пытался поместить все атрибуты в свойствах вместо уровней, но я не мог понять, как получить общее количество пользователей мужского и женского пола.

И это должно быть довольно просто, потому что все это будет частью динамического би-инструмента ...

1 Ответ

1 голос
/ 15 декабря 2011

Вы используете неправильную функцию для того, что вы хотите.

Функция Member MDX получает все члены, содержащие ограничение на MDX, а не все значения уровня. Вы хотите все значения уровня.

Для этого вы должны использовать функцию Детский MDX. Требуются все значения (или дочерние элементы) соответствующего уровня. Попробуйте это:

SELECT {[user].[gender].children} ON COLUMNS,
  {[Measures].[Fact Count]} ON ROWS
FROM [cube]

Итак, мне нужно гибкое упорядочение уровней. Это возможно? Я знаю, что есть параллельные иерархии, но я не могу создать их для каждого возможного заказа ...

Создать иерархию, содержащую только один уровень. Я вижу, что на самом деле нет ничего настолько сильного в их иерархии, что было бы рекомендовано и не теряло гибкости. Это предотвращает ошибочную работу OLAP куба данных, такую ​​как детализация и свертывание (которые используют иерархии). Получается что-то вроде этого:

<Dimension foreignKey="user" highCardinality="false" name="user">
   <Hierarchy name="TIMEZONE" hasAll="true" allMemberName="all" primaryKey="ID">
     <Table name="user" />
     <Level name="timezone" column="timezone"/>
   </Hierarchy>
   <Hierarchy name="LOCALE" hasAll="true" allMemberName="all" primaryKey="ID">
     <Table name="user" />
     <Level name="locale" column="locale"/>
   </Hierarchy>
   <Hierarchy name="GENDER" hasAll="true" allMemberName="all" primaryKey="ID">
     <Table name="user" />
     <Level name="gender" column="gender"/>
   </Hierarchy>
</Dimension>

Надеюсь, эта помощь.

...