powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX: как выдать только непустые элементы иерархии?
8 сообщений из 8, страница 1 из 1
MDX: как выдать только непустые элементы иерархии?
    #40067500
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть иерархическое измерение регионов dimRegion.
Атрибуты измерения:
Атрибут описаниеID линейныйValue линейныйHierValue иерархический

Задача : сделать такой запрос, чтобы из атрибута HierValue получить только значение "Арбат" по имени пользователя.
Цель : динамическая раздача прав пользователям.
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067502
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытка номер 1:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
NonEmpty
(
    [dimRegion].[HierValue].Members,
    (
        [Measures].[Факт Count],
        [dimSotr].[Сотрудник].[Иванов]
    )
) 


Выдаёт всю иерархию:
HierValueAllРоссияМоскваАрбат

Попытка номер 2:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
NonEmpty
(
    [dimRegion].[HierValue].[Уровень 4],
    (
        [Measures].[Факт Count],
        [dimSotr].[Сотрудник].[Иванов]
    )
) 


Выдаёт то, что нужно. Вот только для этого приходится указывать конкретную иерархию. И плюс, то что нужно только в данном примере. Если у Иванова доступ к Арбату и к Киеву - разные уровни иерархии, то не пойдёт.
HierValueАрбат
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067505
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытка номер 3:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
NonEmpty
(
    [dimRegion].[Value].Members,
    (
        [Measures].[Факт Count],
        [dimSotr].[Сотрудник].[Иванов]
    )
) 


Выдаёт всю иерархию:
ValueАрбат
Да, идеально. Почти. Не годится.

Необходимо дать доступ именно к иерархическому дереву, а НЕ к НЕиерархическому атрибуту.
если я дам доступ пользователю к "России" из линейного атрибута, тогда он будет видеть только одну строку - Россия.
А если я дам к "России" из иерархического атрибута, тогда он будет видеть И россию, И всё, что в неё входит - всё её дочерние элементы (Москва, Арбат).
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067516
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

факты только на листьях?
Leaves() или Descendants(Откуда,,LEAVES) пробовал?
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067536
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

нет, не только.
доступ можно дать к арбату, можно дать целиком к москве, или ко всей россии.

т. е. к конкретному узлу дерева
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067540
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

тогда из цепочки Tail(ххх, 1)
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067606
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tail действительно очень здорово помогает в случае, если право одно.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Tail(
NonEmpty
(
    [dimRegion].[HierValue].Members,
    (
        [Measures].[Факт Count],
        [dimSotr].[Сотрудник].[Иванов]
    )
)
,2) 


У каждого узла иерархии есть в качестве дочернего он сам же.
Поэтому за счёт " ,2) " я получаю два элемента: сам узел и уровнем выше - его поддерево.

Но как должен выглядеть запрос, чтобы получить выделенные красным узлы? Чтобы получить все поддеревья. Можно с захватом одноимённых дочерних, как это делает Tail(xxx, 2)
Этот запрос помещается в роль в раздел "разрешённые"
...
Рейтинг: 0 / 0
MDX: как выдать только непустые элементы иерархии?
    #40067608
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
картинку чуть неправильную вставил.

корректная ниже.

Красным выделены те элементы, которые на самом деле являются узловыми, но в дереве отображаются. Это "datamember" узла.
Дело в том, что tail(xxx, 1) вернёт
[dimRegion].[HierValue].&[7].Datamember

а Дело в том, что tail(xxx, 2) вернёт
[dimRegion].[HierValue].&[7].Datamember
и [dimRegion].[HierValue].&[7]

вот эти datamember'ы как-то исключить бы...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX: как выдать только непустые элементы иерархии?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]