powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / подробности работы Leaves (yukon)
9 сообщений из 9, страница 1 из 1
подробности работы Leaves (yukon)
    #33239513
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот какой красивый код предложил Моша к одному из моих вопросов:

Код: plaintext
1.
2.
SCOPE (Measures.Sum, Leaves(ItemGroup));
This = Qty*Price;
END SCOPE;

несколько проблем я описал в том же посте
http://www.sql.ru/forum/actualthread.aspx?tid=210739 , но сейчас хочется спросить знатоков
функции Leaves.

как известно этот код заменяет примерно такой

Код: plaintext
1.
2.
3.
iif( IsLeaf([ItemGroup].[ItemGroup]),
[Qty]*[Price],
Sum({[ItemGroup].[ItemGroup].children})
)

но вот проблема в IsLeaf аргумет - это hierarchy, а в Leaves - dimension

у нас есть dimension [Товар], а там 2 hierarchy [Признак 1].[Признак 2] и [Признак 2].[Признак 1]

или dimension [Подразделения] а там 2 hierarchy [Юридическое лицо].[Филиал].[Департамент], и [Юридическое лицо].[Филиал]

так вот если написать Leaves(Товар) или Leaves(Подразделения) - что будет листьями в этих случаях? возможно я пропустил что-то в документации по этому поводу...?
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33239905
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leaves - это функция которая работает с dimension или с measure group. Главное ее применение внутри SCOPE statement. Ну а если нужны листья иерархии, то можно сказать DESCENDANDS(hierarchy,,LEAVES)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33239947
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaLeaves - это функция которая работает с dimension или с measure group. Главное ее применение внутри SCOPE statement. Ну а если нужны листья иерархии, то можно сказать DESCENDANDS(hierarchy,,LEAVES)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

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

есть dimension [Товар], а там 2 иерархии [Группировка1].[Наименование] и [Группировка2].[Наименование]

как обычно CM Sum в As2000 выглядит примерно так
IIF isleaf([Группировка1]) Qty*price, Sum(Группировка1].children)

так вот когда пользователь хочет посмотреть в разрезе [Группировка2], то CM перестает работать так как хочется.

можно ли что то нам посоветовать? спасибо

(функция Leaves звучит очень перспективно, как кажется)
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33240023
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне как раз и кажется, что суммирование должно происходить вне зависимости по какой группировке происходит просмотр данных, поэтому именна нужна функция которая работает со всем измерением, а не с отдельно взятой иерархией.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33241901
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaМне как раз и кажется, что суммирование должно происходить вне зависимости по какой группировке происходит просмотр данных, поэтому именна нужна функция которая работает со всем измерением, а не с отдельно взятой иерархией.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

да действительно, суммирование происходит как надо. просто я забыл написать о проблеме которая возникла с Leaves.

итак раньше мы писали
проверка на листья: IsLeaf(dimension)
и для листьев использовали некоторую информацию из "папы": (Measures.Coef,Ancestor([dimension].currentmember,1))

теперь IsLeaf([dimension]) мы заменили на Leaves([dimension])

но так как в dimension у нас есть несколько иерархий
то написать Ancestor([dimension].currentmember,1)) не получается - просят указать иерархию :-(


хочется, чтобы эта формала работала для любой иерархии в этом dimension.
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33242266
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zmikeитак раньше мы писали
проверка на листья: IsLeaf(dimension)
и для листьев использовали некоторую информацию из "папы": (Measures.Coef,Ancestor([dimension].currentmember,1))
Но если мы находимся на настоящем Leaves, то это значит что мы на атрибуте "Наименование". У него может быть два разных папы - Группировка1 и Группировка2. В зависимости от того которого надо взять, по тому и надо делать Ancestor.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33242315
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha zmikeитак раньше мы писали
проверка на листья: IsLeaf(dimension)
и для листьев использовали некоторую информацию из "папы": (Measures.Coef,Ancestor([dimension].currentmember,1))
Но если мы находимся на настоящем Leaves, то это значит что мы на атрибуте "Наименование". У него может быть два разных папы - Группировка1 и Группировка2. В зависимости от того которого надо взять, по тому и надо делать Ancestor.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

совершенно верно, их может быть 2 - но формула от этого "не меняется".
то есть надо написать что-то типа current_hierarchy. возможно я много хочу, но хочется взять папу того, который сейчас "текущий".

ну к примеру поделить некоторую меру child-а на общую характеристику parent.
так в этом случае не важно что за иерархия, формула "не меняется". а таких иерархий у нас хотят наделать несколько... можно даже сказать много.
надеюсь я понятно объяснил проблему... не хочется писать много :)
хотелось как-то воспользоваться тем что в dimension может быть много иерархий.
спасибо за внимание к теме.
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33242348
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zmikeто есть надо написать что-то типа current_hierarchy. возможно я много хочу, но хочется взять папу того, который сейчас "текущий".
Я не понял понятие "текущей иерархии". Вы можете привести пример ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
подробности работы Leaves (yukon)
    #33244230
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha zmikeто есть надо написать что-то типа current_hierarchy. возможно я много хочу, но хочется взять папу того, который сейчас "текущий".
Я не понял понятие "текущей иерархии". Вы можете привести пример ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

постараюсь объяснить с начала.

например у нас dimension [товар]
делаем 2 hierarchy [группировка товаров 1].[наименование], [группировка
товаров 2].[наименование]

далее у нас для каждой группы товаров (в обоих иерархиях) есть
CM [средняя цена]

хотим например посчитать отклонение от средней цены для каждого товара

так вот если клиент смотрит в разрезе [группировка товаров 1],
то AS2000 мы бы написали

iif(isLeaf([группировка товаров 1])
[price] - Measures.AvgPrice,Ancestor([группировка товаров 1].[наименование].currentmember,1)),
0
)

соответственно когда в разрезе [группировка товаров 2]

iif(isLeaf([группировка товаров 2])
[price] - Measures.AvgPrice,Ancestor([группировка товаров 2].[наименование].currentmember,1)),
0
)


в AS2005 было бы здорово написать

Scope( delta, Leaves([товар]) )

[price] - Measures.AvgPrice,Ancestor([товар].currentmember,1)),


и это бы работало вне зависимости от того в каком разрезе (иерархии) смотрит
пользователь.

как я уже сказал, я охотно верю что это невозможно в принципе, но может поскажите какую другую идею из опыта?

P.S. ну и разумеется иерархий, измерений и вычисляемых переменных - кучи
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / подробности работы Leaves (yukon)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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