Поделиться через


Пользовательские иерархии

Пользовательские иерархии представляют собой определяемые пользователем иерархии атрибутов, которыми службы MicrosoftSQL ServerAnalysis Services пользуются для организации элементов измерения в иерархические структуры и обеспечения навигационных путей в кубе. Например, в следующей таблице определена таблица измерения для измерения времени. Эта таблица измерения поддерживает три атрибута: «Год», «Квартал» и «Месяц».

Год

Квартал

Месяц

1999

Квартал 1

Январь

1999

Квартал 1

Февраль

1999

Квартал 1

Март

1999

Квартал 2

Апрель

1999

Квартал 2

Май

1999

Квартал 2

Июнь

1999

Квартал 3

Июль

1999

Квартал 3

Август

1999

Квартал 3

Сентябрь

1999

Квартал 4

Октябрь

1999

Квартал 4

Ноябрь

1999

Квартал 4

Декабрь

Атрибуты «Год», «Квартал» и «Месяц» используются для построения пользовательской иерархии «Календарь» в измерении времени. Связь между уровнями и элементами измерения «Календарь» (обычного измерения) показана на следующей диаграмме.

Иерархия уровней и элементов измерения времени

ПримечаниеПримечание

Любая иерархия, отличная от двухуровневой иерархии атрибутов по умолчанию, называется пользовательской иерархией. Дополнительные сведения об иерархиях атрибутов см. в разделе Атрибуты и иерархии атрибутов.

Структуры элементов

За исключением иерархий типа «родители-потомки», положения элементов в иерархии контролируются порядком атрибутов в определении иерархии. Каждый атрибут в определении иерархии составляет один уровень иерархии. Положение элемента в пределах уровня определяется порядком атрибута, используемого для создания уровня. Пользовательские иерархии могут принимать одну из четырех базовых форм структур элементов согласно способу их связи друг с другом.

Сбалансированные иерархии

В сбалансированной иерархии все ветви иерархии опускаются до одного уровня, и логическим «родителем» каждого элемента является уровень непосредственно над элементом. Иерархия «Категории продуктов» измерения «Продукт» в образце базы данных Adventure Works DW служб Analysis Services представляет собой хороший пример сбалансированной иерархии. Каждый элемент уровня «Имя продукта» имеет «родительский» элемент на уровне «Подкатегория», который в свою очередь имеет «родительский» элемент на уровне «Категория». Кроме того, каждая ветвь иерархии имеет конечный элемент на уровне «Название продукта».

Несбалансированные иерархии

В несбалансированной иерархии ветви иерархии опускаются до различных уровней. Иерархии типа «родители-потомки» являются несбалансированными. Например, измерение «Организация» в образце базы данных Adventure Works DW служб Analysis Services содержит по одному элементу на каждого сотрудника. Генеральный директор является верхним элементом в иерархии, а руководители подразделений и исполнительный секретарь находятся непосредственно под генеральным директором. Руководители подразделений имеют подчиненные элементы, а исполнительный секретарь — нет.

Для конечных пользователей может быть невозможно провести различие между несбалансированными и клочковатыми иерархиями. Однако для поддержки этих двух типов иерархий в службах Analysis Services применяются различные методы и свойства. Дополнительные сведения см. в разделах Работа с неровными иерархиями и Работа с атрибутами в иерархиях типа «родители-потомки».

Неоднородные иерархии

В неоднородной иерархии по крайней мере у одного элемента логический родитель не находится ровно на один уровень выше самого элемента. Это может привести к тому, что ветви иерархии опускаются до различных уровней. Например, в измерении «География», определенном с уровнями «Континент», «Страна» и «Город» именно в этом порядке, элемент «Европа» отображается на верхнем уровне иерархии, элемент «Франция» отображается на среднем уровне, а элемент «Париж» — на нижнем уровне. «Франция» является более точным определением, чем «Европа», а «Париж» является более точным определением, чем «Франция». В эту обычную иерархию вносятся следующие изменения.

  • Элемент «Ватикан» добавляется к уровню «Страна».

  • Элементы добавляются к уровню «Город» и связываются с элементом «Ватикан» уровня «Страна».

  • Уровень с именем «Район» добавляется между уровнями «Страна» и «Город».

Уровень «Район» заполняется элементами, связанными с другими элементами уровня «Страна», а элементы уровня «Город» связываются соответствующими им элементами уровня «Район». Однако поскольку элемент «Ватикан» уровня «Страна» не имеет связанных с ним элементов уровня «Район», элементы с уровня «Город» должны быть непосредственно связаны с элементом «Ватикан» уровня «Страна». В результате произведенных изменений иерархия измерения стала неровной. Родительским элементом города «Ватикан» является страна «Ватикан», которая не находится на уровне непосредственно над элементом «Ватикан» уровня «Город». Дополнительные сведения см. в разделе Работа с неровными иерархиями.

Иерархии типа «родители-потомки»

Иерархии типа «родители-потомки» для измерений определяются с использованием специального атрибута, называемого «родительским», для определения того, как элементы относятся друг к другу. Родительский атрибут описывает связь, ссылающуюся на себя (или самосоединение) в пределах главной таблицы измерения. Иерархии типа «родители-потомки» создаются из одного родительского атрибута. Иерархии типа «родители-потомки» присваивается только один уровень, поскольку уровни, присутствующие в иерархии, получаются в результате связи типа «родители-потомки» между элементами, связанными с родительским атрибутом. Схема измерения иерархии типа «родители-потомки» зависит от самосоединения, присутствующего в главной таблице измерения. Например, на следующей диаграмме показана главная таблица измерения DimOrganization в образце базы данных AdventureWorksDW служб Analysis Services.

Ссылающееся на себя соединение в таблице DimOrganization

В этой таблице измерения столбец ParentOrganizationKey имеет связь по внешнему ключу со столбцом первичного ключа OrganizationKey. Иными словами, каждая запись в этой таблице может быть посредством связи типа «родители-потомки» сопоставлена с другой записью в таблице. Подобный тип самосоединения обычно используется для представления данных сущности организации (например, структуры управления сотрудниками в отделе).

При создании иерархии типа «родители-потомки» столбцы, представленные обоими атрибутами, должны иметь одинаковый тип данных. Оба атрибута также должны находиться в одной и той же таблице. По умолчанию любой элемент, «родительский» ключ которого равен его собственному ключу элемента, значению NULL, 0 (нулю) или значению, отсутствующему в столбце для ключей элементов, считается элементом верхнего уровня (исключая уровень «Все»).

Глубина иерархии типа «родители-потомки» может изменяться между ее иерархическими ветвями. Иными словами, иерархия типа «родители-потомки» считается несбалансированной.

В отличие от пользовательских иерархий, в которых общее количество уровней определяет число уровней, видимое конечному пользователю, иерархия типа «родители-потомки» определяется единственным уровнем иерархии атрибутов, а значения в нем реализуют несколько уровней, видимых конечными пользователями. Количество отображаемых уровней зависит от содержимого столбца таблицы измерения, в котором хранятся ключи элементов и «родительские» ключи. Количество уровней может изменяться при изменении данных в таблицах измерения. Дополнительные сведения см. в разделах Определение иерархии типа «родители-потомки» и Работа с атрибутами в иерархиях типа «родители-потомки».