|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
Есть иерархическое измерение регионов dimRegion. Атрибуты измерения: Атрибут описаниеID линейныйValue линейныйHierValue иерархический Задача : сделать такой запрос, чтобы из атрибута HierValue получить только значение "Арбат" по имени пользователя. Цель : динамическая раздача прав пользователям. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 10:57 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
Попытка номер 1: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Выдаёт всю иерархию: HierValueAllРоссияМоскваАрбат Попытка номер 2: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Выдаёт то, что нужно. Вот только для этого приходится указывать конкретную иерархию. И плюс, то что нужно только в данном примере. Если у Иванова доступ к Арбату и к Киеву - разные уровни иерархии, то не пойдёт. HierValueАрбат ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 10:58 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
Попытка номер 3: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Выдаёт всю иерархию: ValueАрбат Да, идеально. Почти. Не годится. Необходимо дать доступ именно к иерархическому дереву, а НЕ к НЕиерархическому атрибуту. если я дам доступ пользователю к "России" из линейного атрибута, тогда он будет видеть только одну строку - Россия. А если я дам к "России" из иерархического атрибута, тогда он будет видеть И россию, И всё, что в неё входит - всё её дочерние элементы (Москва, Арбат). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 11:02 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
Charles Weyland, факты только на листьях? Leaves() или Descendants(Откуда,,LEAVES) пробовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 11:11 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
ShIgor, нет, не только. доступ можно дать к арбату, можно дать целиком к москве, или ко всей россии. т. е. к конкретному узлу дерева ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 11:35 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
Charles Weyland, тогда из цепочки Tail(ххх, 1) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 11:44 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
Tail действительно очень здорово помогает в случае, если право одно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
У каждого узла иерархии есть в качестве дочернего он сам же. Поэтому за счёт " ,2) " я получаю два элемента: сам узел и уровнем выше - его поддерево. Но как должен выглядеть запрос, чтобы получить выделенные красным узлы? Чтобы получить все поддеревья. Можно с захватом одноимённых дочерних, как это делает Tail(xxx, 2) Этот запрос помещается в роль в раздел "разрешённые" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 14:14 |
|
MDX: как выдать только непустые элементы иерархии?
|
|||
---|---|---|---|
#18+
картинку чуть неправильную вставил. корректная ниже. Красным выделены те элементы, которые на самом деле являются узловыми, но в дереве отображаются. Это "datamember" узла. Дело в том, что tail(xxx, 1) вернёт [dimRegion].[HierValue].&[7].Datamember а Дело в том, что tail(xxx, 2) вернёт [dimRegion].[HierValue].&[7].Datamember и [dimRegion].[HierValue].&[7] вот эти datamember'ы как-то исключить бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2021, 14:19 |
|
|
start [/forum/topic.php?fid=49&msg=40067608&tid=1857148]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 262ms |
total: | 398ms |
0 / 0 |