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


Пользовательские иерархии — неоднородные иерархии

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

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

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

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

Этот раздел состоит из следующих подразделов.

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

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

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

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

Если в измерении есть несколько неоднородных иерархий, следует воспользоваться первым способом, задав свойство HideMemberIf. Разработчики бизнес-аналитики, имеющие практический опыт работы с неоднородными иерархиями, рекомендуют вносить дополнительные изменения в физические таблицы данных путем создания отдельных таблиц для каждого уровня. Дополнительные сведения об этой методике см. в статье Мартин Мейсон в SSAS Financial Cube-Part 1a-Ragged Hierarchies (блог).

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

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

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

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

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

    Значение свойства HideMemberIf Описание
    Никогда Элементы уровня никогда не скрываются. Это значение по умолчанию.
    OnlyChildWithNoName Элемент уровня скрывается, только когда он является единственным дочерним элементом и его имя не задано (значение NULL или пустая строка).
    OnlyChildWithParentName Элемент уровня скрывается, только когда он является единственным дочерним элементом и его имя совпадает с именем родительского элемента.
    NoName Элемент уровня скрывается, если его имя пустое.
    ParentName Элемент уровня скрывается, если его имя совпадает с именем родительского элемента.

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

После задания свойства 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)