powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Сумма по итогам
10 сообщений из 10, страница 1 из 1
Сумма по итогам
    #39778822
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня! Есть физическая null - мера, которую переопределяю скопом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
scope
(
    [Measures].[Diff Price]
);
    this = iif(isempty([Measures].[Min Price]) or IsEmpty([Measures].[Min Competitor Price]), 
                null, 
                [Measures].[Min Price] - [Measures].[Min Competitor Price]);
end scope;


подскажите пожалуйста как сделать чтобы итог был не разница значений, а сумма?
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779115
PassedBI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rsolanov,

Попробуй только на уровне брендов скоп определять:
Код: sql
1.
2.
3.
4.
scope
(
    ([Measures].[Diff Price], [DimBrand].[Brand Name].[Brand Name].members)
);
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779325
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanov,

я бы попробовал сделать по-другому, через MeasureExpression
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779354
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanovВсем доброго дня! Есть физическая null - мера, которую переопределяю скопом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
scope
(
    [Measures].[Diff Price]
);
    this = iif(isempty([Measures].[Min Price]) or IsEmpty([Measures].[Min Competitor Price]), 
                null, 
                [Measures].[Min Price] - [Measures].[Min Competitor Price]);
end scope;


подскажите пожалуйста как сделать чтобы итог был не разница значений, а сумма?

Вычисление через тоталы здесь не поможет, поэтому вам нужно вычислить тотал для брендов как сумму разностей.

что-то вроде sum([DimBrand].[Brand Name].[All].children, [Measures].[Min Price] - [Measures].[Min Competitor Price])
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779663
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassedBIrsolanov,

Попробуй только на уровне брендов скоп определять:
Код: sql
1.
2.
3.
4.
scope
(
    ([Measures].[Diff Price], [DimBrand].[Brand Name].[Brand Name].members)
);

Да, если сделать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
scope
(
    [Measures].[Diff Price Test],
    [Product].[Brand Name].[Brand Name].members
);
    this = iif(isempty([Measures].[Min Price]) or IsEmpty([Measures].[Min Competitor Price]), 
                null, 
                [Measures].[Min Price] - [Measures].[Min Competitor Price]);
end scope;


это работает только если использованы элементы атрибута "Brand Name", но если пользователь будет использовать например атрибут "Article Number" этого же измерения, тогда нужно чтобы также это работало уже не для "Brand Name", а для выбранного атрибута. Также пользователь может использовать и другие атрибуты других связанных измерений.
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779678
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassedBI, если делать как вы говорите, то будет следующая картина (мера Diff Price Test):
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779703
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanovPassedBI, если делать как вы говорите, то будет следующая картина (мера Diff Price Test):

Я же вам написал в чем проблема. Вам нужно проссумировать новую меру по брендам на уровне [DimBrand].[Brand Name].[All], а не вычислять её из итогов
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779747
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tarrusrsolanovPassedBI, если делать как вы говорите, то будет следующая картина (мера Diff Price Test):

Я же вам написал в чем проблема. Вам нужно просуммировать новую меру по брендам на уровне [DimBrand].[Brand Name].[All], а не вычислять её из итоговСделал следующим образом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE MEMBER CURRENTCUBE.[Measures].[Diff Price Test2]
AS iif(isempty([Measures].[Min Price]) or IsEmpty([Measures].[Min Competitor Price]), 
    null, 
    [Measures].[Min Price] - [Measures].[Min Competitor Price]), 
FORMAT_STRING = "#,#0", 
NON_EMPTY_BEHAVIOR = { [Measures].[Min Price], [Measures].[Min Competitor Price] },
VISIBLE = 1 ,  
ASSOCIATED_MEASURE_GROUP = 'Prices';

scope
(
    [Measures].[Diff Price Test2],
    [Product].[Brand Name].[All]
);
    this  = sum([Product].[Brand Name].[All].CHILDREN, 
                iif(isempty([Measures].[Min Price]) or IsEmpty([Measures].[Min Competitor Price]), 
                    null, 
                    [Measures].[Min Price] - [Measures].[Min Competitor Price]));
end scope;

Получаю следующую картину:
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779778
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsolanov,

Вам нужны только бренды из вашего контекста, а не все. Я вам привел пример, а не готовое решение.
...
Рейтинг: 0 / 0
Сумма по итогам
    #39779896
tarrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarrusrsolanov,

Вам нужны только бренды из вашего контекста, а не все. Я вам привел пример, а не готовое решение.

А, еще у вас Min Price посчитана даже для пустых строк. Уберите её и все сложится.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Сумма по итогам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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