Published on

November 16, 2008

Динамическая безопасность измерений в SQL Server Analysis Services

При работе с SQL Server Analysis Services могут возникать ситуации, когда нам необходимо реализовать динамическую безопасность измерений и отображать разрешенные элементы в фильтре PerformancePoint. Это может быть особенно полезно при работе с многоуровневыми иерархиями и когда безопасность должна применяться на нескольких уровнях.

По умолчанию PerformancePoint будет отображать полный путь от разрешенного элемента до корневого элемента измерения. Например, если у нас есть иерархия “Бизнес-юнит” с доступом к Франции, PerformancePoint будет отображать следующий путь: Все бизнес-юниты – Европа – Франция. Хотя пользователь увидит только данные по Франции при выборе “Все бизнес-юниты” или “Европа”, это все равно может быть запутывающим.

Чтобы убрать отображение верхних уровней в PerformancePoint, нам нужно изменить способ создания нашего фильтра. Один из подходов – использовать фильтр MDX-запроса. Это позволяет нам указать пользовательский MDX-запрос для фильтрации элементов.

Вместо запроса всех элементов измерения с помощью простого выражения, например:

DESCENDANTS([Business].[Business Hierarchy].Members,, SELF_AND_AFTER)

Мы можем написать более конкретный MDX-запрос, который фильтрует элементы на основе определенных условий. Например, мы можем использовать следующий код MDX:

DESCENDANTS(
  FILTER([Business].[Business Hierarchy].Members AS a, 
    ((FILTER(ASCENDANTS(a.CurrentMember) AS a_asc, a_asc.CurrentMember.CHILDREN.Count > 1).Count = 1) And a.CurrentMember.Children.Count > 1) 
    Or 
    ((FILTER(ASCENDANTS(a.CurrentMember) AS a_asc, a_asc.CurrentMember.CHILDREN.Count > 1).Count = 0) And a.CurrentMember.Children.Count = 0)
  ),
  SELF_AND_AFTER
)

Этот MDX-запрос фильтрует элементы, выбирая потомков всех элементов измерения, у которых предки (исключая самих себя) имеют не более одного потомка. В результате в выпадающем списке PerformancePoint будет отображаться только разрешенный элемент, в данном случае Франция.

Если есть несколько разрешенных элементов, MDX-запрос покажет верхнего общего родителя этих элементов. Например, если Франция и Канада являются разрешенными элементами, выпадающий список будет состоять из следующей иерархии: Все бизнес-юниты – Европа – Франция – Северная Америка – Канада.

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

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.