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


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

Неоднородная иерархия — это определяемая пользователем иерархия, имеющая нечетное число уровней. В качестве распространенного примера можно привести организационную диаграмму, где непосредственными подчиненными руководителей высокого уровня являются как руководители отделов, так и сотрудники этих отделов, либо географическую иерархию, состоящую из страны, области и города, где у некоторых городов нет штата или провинции, например у Вашингтона, Ватикана или Нью-Дели.

Для большинства иерархий в измерении каждый уровень имеет столько же родительских элементов, сколько и любой другой элемент на том же уровне. Неоднородная иерархия отличается тем, что как минимум у одного элемента логический родительский элемент расположен не ровно на один уровень выше самого элемента. В этом случае различные ветви иерархии заканчиваются на разных уровнях. В клиентских приложениях это может нежелательно усложнить пути углубленной детализации.

Клиентские приложения работают с неоднородными иерархиями по-разному. Если в модели присутствуют неоднородные иерархии, то для обеспечения их правильного отображения будьте готовы к выполнению небольшого дополнительного объема работы.

Прежде всего проверьте клиентское приложение на предмет обработки пути углубленной детализации. Например, Excel в качестве заполнителей отсутствующих значений повторяет имена родительских элементов. Чтобы посмотреть, как это работает, постройте сводную таблицу на основе измерения Sales Territory в многомерной модели Adventure Works. В сводной таблице с атрибутами Group, Country и Region измерения Sales Territory страны, для которых нет значения региона, получат заполнитель (в данном случае повторение родительского элемента — названия страны). Такое поведение является производным от свойства строки подключения MDX Compatibility=1, которое в Excel является неизменным. Если клиент не обеспечивает надлежащей детализации углублением, можно попытаться как-то это изменить путем задания свойств модели.

В этом разделе содержатся следующие подразделы:

  • Варианты изменения навигации углубленной детализацией в неоднородных иерархиях

  • Задание HideMemberIf для скрытия элементов в однородной иерархии

  • Задание MDX Compatibility определяет, каким образом заполнители представляются в клиентских приложениях.

Варианты изменения навигации углубленной детализацией в неоднородных иерархиях

Наличие неоднородной иерархии становится проблемой, когда навигация углубленной детализацией не позволяет получить ожидаемые значения либо ей неудобно пользоваться. Чтобы решить проблемы, связанные с неоднородными иерархиями, рассмотрим следующие варианты.

  • Использовать однородную иерархию, для каждого уровня с помощью свойства HideMemberIf указав, будет ли отсутствующий уровень отображаться для пользователя. При задании свойства HideMemberIf также необходимо в строке подключения указывать свойство MDXCompatibility, чтобы переопределить работу навигации по умолчанию. Инструкции по заданию этих свойств приведены в этом разделе.

  • Создать иерархию типа «родители-потомки», которая явным образом управляет элементами уровня. Этот метод проиллюстрирован в статье Неоднородная иерархия в службах SSAS (запись в блоге). Дополнительные сведения см. в разделе электронной документации Измерения «родители-потомки». Недостаток иерархии типа «родители-потомки» заключается в том, что измерение может иметь всего одну такую иерархию. Кроме того, вычисление агрегатов для промежуточных элементов обычно негативно отражается на производительности.

Если измерение содержит несколько неоднородных иерархий, выбирайте первый вариант — установку свойства HideMemberIf. Разработчики бизнес-аналитики, имеющие практические навыки работы с неоднородными иерархиями, предлагают вносить дополнительные изменения в физические таблицы данных путем создания отдельных таблиц для каждого уровня. Подробное описание этого способа приведено в статье Финансовый куб в службах SSAS. Часть 1a. Неоднородные иерархии. Мартин Мэйсон (блог).

Задание HideMemberIf для скрытия элементов в однородной иерархии

В таблице переменного измерения логически отсутствующие элементы могут представляться различными способами. Ячейки таблицы могут содержать правила, пустые строки или значения родительских элементов (когда они служат заполнителями). Представление заполнителей определяется состоянием заполнителя дочернего элемента, которое задается свойством HideMemberIf и свойством строки подключения MDX Compatibility для клиентского приложения.

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

  1. В SSDT дважды щелкните измерение, чтобы открыть его в конструкторе измерений. На первой вкладке «Структура измерения» на панели «Иерархии» отображается иерархия атрибутов.

  2. Щелкните правой кнопкой мыши элемент в иерархии и выберите Свойства. Установите свойство HideMemberIf в одно из описанных далее значений.

    Значение свойства HideMemberIf

    Описание

    Never

    Элементы уровня никогда не скрываются. Это значение по умолчанию.

    OnlyChildWithNoName

    Элемент уровня скрывается, только когда он является единственным дочерним элементом и его имя не задано (значение NULL или пустая строка).

    OnlyChildWithParentName

    Элемент уровня скрывается, только когда он является единственным дочерним элементом и его имя совпадает с именем родительского элемента.

    NoName

    Элемент уровня скрывается, если его имя пустое.

    ParentName

    Элемент уровня скрывается, если его имя совпадает с именем родительского элемента.

Задание MDX Compatibility определяет, каким образом заполнители представляются в клиентских приложениях.

После задания свойства HideMemberIf на уровне иерархии также необходимо задать свойство MDX Compatibility в строке подключения, которая передается из клиентского приложения. Значение свойства MDX Compatibility определяет, будет ли использоваться свойство HideMemberIf.

Задание свойства MDX Compatibility

Описание

Использование

1

Показать значение заполнителя.

Это значение по умолчанию, которое используют Excel, SSDT и SSMS. Оно указывает серверу возвращать значения заполнителей при детализации углублением пустых уровней в неоднородной иерархии. Если щелкнуть значение заполнителя, то детализацию углублением можно будет продолжить вплоть до дочерних (конечных) узлов.

В Excel задается строка подключения к службам Analysis Services. В ней для каждого нового подключения свойство MDX Compatibility всегда устанавливается в значение 1. Это сделано для обеспечения обратной совместимости.

2

Скрыть значение заполнителя (значение NULL или копия значения с родительского уровня), но показывать другие уровни и узлы, имеющие соответствующие значения.

Для неоднородных иерархий обычно предпочтительнее указывать MDX Compatibility=2. Отчет служб Службы Reporting Services и некоторые сторонние приложения могут сохранять это значение.

См. также

Основные понятия

Создание пользовательских иерархий

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

Измерения «родители-потомки»

Свойства строки подключения (службы Analysis Services)