powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация сетов в CM
3 сообщений из 3, страница 1 из 1
Оптимизация сетов в CM
    #33732269
LJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

есть следующий CM:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE MEMBER CURRENTCUBE.[MEASURES].[Группа ABC анализа по Продажам]
AS 
Iif([Products].[Palma].CurrentMember.Level is [Products].[Palma].[Description], 
    Iif([Measures].[Продано, грн] <>  0 ,
        iif(Rank([Products].[Palma].CurrentMember, 
                   TOPPERCENT([Products].[Palma].[Description],  60 , 
                                     [Measures].[Продано, грн]))> 0 , "A",
        Iif(Rank([Products].[Palma].CurrentMember, 
                   TOPPERCENT([Products].[Palma].[Description],  90 , 
                                     [Measures].[Продано, грн]) - 
                   TOPPERCENT([Products].[Palma].[Description],  60 , 
                                     [Measures].[Продано, грн]))> 0 , "B", "C")),
    Null), 
Null), 
VISIBLE =  1   ; 

используется для определения принадлежности номенклатуры к группе
АВС анализа. Очень долго работает.

та же задача реализованая на уровне запроса:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with
set Product as [Products].[Palma].[Description]

set setA as TOPPERCENT(Product,  60 , ([Measures].[Продано, грн]))
set setAB as TOPPERCENT(Product,  90 , ([Measures].[Продано, грн]))
set setB as setAB - setA
set setC as Product - setAB

member [measures].[Группа ABC анализа по продажам]
as
Iif([Products].[Palma].CurrentMember.Level is [Products].[Palma].[Description], 
    Iif([Measures].[Продано, грн] <>  0 ,
        iif(Rank([Products].[Palma].CurrentMember, setA)> 0 , "A",
           Iif(Rank([Products].[Palma].CurrentMember, setB)> 0 , "B", "C")),
    Null),
Null)

select [Products].[Palma].[Description] on  1 ,
         [Members].[Продано, грн] on  0 
from [Логистика]
Where [Time].[YMD].[ 2006 ]

работает не в пример быстрее.

Внимание вопрос! :)

Обьясните Обьективные причины такой разницы во времени и подскажите способы оптимизации данной задачи на уровне куба! Спасибо!
...
Рейтинг: 0 / 0
Оптимизация сетов в CM
    #33732355
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так думаю, что на уровне запроса сеты рассчитываются один раз, а когда вы их засунули в выражение для СМ на уровне куба, то оптиммизатору не хватает мозгов не рассчитывать сеты на каждой ячейке.

Если вы перепишете ваш запрос таким образом, что в нем не будет явных выражений для сетов, а они будут фигурировать в формуле для мембера - вонь от горящих колодок вам гарантирована.
...
Рейтинг: 0 / 0
Оптимизация сетов в CM
    #33733045
LJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireЕсли вы перепишете ваш запрос таким образом, что в нем не будет явных выражений для сетов, а они будут фигурировать в формуле для мембера - вонь от горящих колодок вам гарантирована.
Так то оно так, вот только при фильтрации по данному измерению расчет будет происходить по всем его мемберам, а не по группе ограниченной фильтром.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация сетов в CM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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