powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Сustom Member Formula и VisualTotals???
7 сообщений из 7, страница 1 из 1
Сustom Member Formula и VisualTotals???
    #33107959
gray_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все та же задача расчета входящих исходящих остатков.
Создал измерение из трех элементов: «Обороты», «Входящий остаток», «Исходящий остаток». Через СustomMembers описал для «Входящий остаток» и «Исходящий остаток» соответствующие формулы расчета остатков. Все работает замечательно кроме режима VisualTotals. При расчете узла иерархии для visual total значения применяется функция агрегирования заданная для показателя и не выполняется custom member formula.

Думаю что дело в Solve Order - Visual totals calculation выполняется после custom member formulas. Может кто подскажет как решить проблему? Может есть другие варианты реализация остатков корректно работающие с VisualTotals?
Спасибо заранее.
...
Рейтинг: 0 / 0
Сustom Member Formula и VisualTotals???
    #33111068
gray_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У кого нибудь есть рабочая реализация остатков, корректно отображаемых OWC при включенном режиме Visual Totals?
...
Рейтинг: 0 / 0
Сustom Member Formula и VisualTotals???
    #33111073
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слишком мало деталей чтобы понять в чем дело, но если дело действительно в SolveOrder - то его для Custom Member Formulas можно поменять при помощи Custom Member Options.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Сustom Member Formula и VisualTotals???
    #33112023
gray_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Mosha
Спасибо что откликнулись.
Попробовал изменить Solve Order получил другой резудьтат, но не тот что нужен.

Попробую объяснить проблему подробнее.

Моя первая реализация входящего остатка была построена на Calculated Member ([Measures].[Входящий остаток для показателя X]).
Для узлов измерения [Дата] (месяц, квартал, год) он рассчитывается по формуле
([Дата].CurrentMember.FirstChild, [Measures].[Входящий остаток для показателя X]).
При работе в режиме VisualTotals эта формула не отрабатывала для узлов дат. По этим элементам выражение [Дата].CurrentMember.FirstChild всегда возвращало NULL. Если я правильно понял, то VisualTotals создает специальные Calculated Member которыми он подменяет существующие узлы в измерении [Дата] и передает их в формулу, а они ни как не встроены в структуру измерения (кроме ссылки на родителя).

Ожидаемый результат
Код: plaintext
1.
2.
3.
Дата	                          Входящий остаток для показателя X	    X (SUM)
[Дата].[2005].[Июнь] *	100	                                          30
[Дата].[2005].[Июнь].[2]	100	                                          10
[Дата].[2005].[Июнь].[3]	110	                                          20
Полученный
Код: plaintext
1.
2.
3.
Дата	                         Входящий остаток для показателя X	   X (SUM)
[Дата].[2005].[Июнь] *	NULL	                                         30
[Дата].[2005].[Июнь].[2]	100	                                         10
[Дата].[2005].[Июнь].[3]	110	                                         20
Я нашел в форуме ваши замечания, что VisualTotals не применим к Calculated Members, и советовали использовать либо Cell Calculation либо Custom Member Formula.

Вторая реализация. Создал специальное измерение [Вид показателя] с тремя членами:
[Вид показателя].[Обороты]
[Вид показателя].[Входящий остаток]
[Вид показателя].[Исходящий остаток]
Формулы по расчету [Входящий остаток] и [Исходящий остаток] реализовал через Custom Member Formula.
[Вид показателя].[Входящий остаток] для узлов измерения [Дата] рассчитывается ([Дата].CurrentMember.FirstChild, [Вид показателя].[Входящий остаток]).
VisualTotals в этом варианте просто выполнял агрегацию показателей не используя Custom Member Formula.

Ожидаемый результат
Код: plaintext
1.
2.
3.
4.
Дата	                                                 X (SUM)
	                          [Вид показателя].[Входящий остаток] [Вид показателя].[Обороты]
[Дата].[2005].[Июнь] *	100	                                         30
[Дата].[2005].[Июнь].[2]	100	                                         10
[Дата].[2005].[Июнь].[3]	110	                                         20
Полученный
Код: plaintext
1.
2.
3.
4.
Дата	                                                X (SUM)
	                         [Вид показателя].[Входящий остаток]  [Вид показателя].[Обороты]
[Дата].[2005].[Июнь] *	210	                                         30
[Дата].[2005].[Июнь].[2]	100	                                         10
[Дата].[2005].[Июнь].[3]	110	                                         20
Сейчас добавил SOLVE_ORDER = 2 (не знаю какой нужен) через Custom Member Options. Получил результат похожий на первый вариант.

Код: plaintext
1.
2.
3.
4.
Дата	                                                X (SUM)
 	                          [Вид показателя].[Входящий остаток] [Вид показателя].[Обороты]
[Дата].[2005].[Июнь] *	NULL	                                         30
[Дата].[2005].[Июнь].[2]	100	                                         10
[Дата].[2005].[Июнь].[3]	110	                                         20
...
Рейтинг: 0 / 0
Сustom Member Formula и VisualTotals???
    #33112233
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй
SUM(HEAD(NonEmptyCrossJoin(
descendants([Дата].CurrentMember,[Дата].levels(3)),
[Measures].[Входящий остаток для показателя X]),1))

P.S. [Measures].[Входящий остаток для показателя X] - должна быть физ мерой а не CM.

Вообщем сдесь ты берещь первый элемент полученного множество Дата + остаток и все рульно.
...
Рейтинг: 0 / 0
Сustom Member Formula и VisualTotals???
    #33112473
gray_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2OLAPMASTER
Спасибо за вариант!

Как я понял идею: таблица фактов содержит поле "Входящий остаток для показателя X", есть такой же показатель в кубе.

OLAPMASTERSUM(HEAD(NonEmptyCrossJoin(
descendants([Дата].CurrentMember,[Дата].levels(3)),
[Measures].[Входящий остаток для показателя X]),1))

Ищем первый не пустой остаток в дочерних узлах. Принцип тот, но используется еще один показатель хранящий остатки. А хотелось бы избежать хранение остатков в фактах. А этот вариант с VisualTotals нормально работает? У меня есть сомнения, что в OWC в режиме VisualTotals результат будет отличаться от моего.

Я проверил выполнение части выражения
Код: plaintext
descendants([Дата].CurrentMember,[Дата].levels( 3 ))

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

Какой то тупик. Если выполнить расчет ячеек до VisualTotals, то он тупо складывает отфильтрованные элементы. Если выражение расчитывается после VisualTotals, то подмененные элементы не содержат необходимых данных для расчетов.
...
Рейтинг: 0 / 0
Сustom Member Formula и VisualTotals???
    #33112788
gray_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Захотел найти как похожее реализована в FoodMart 2000.

Нашел похожий Culculated Member - [Measures].[Employee Salary]


Выполнил запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select
{[Measures].[Employee Salary]} on  0 ,
VisualTotals(
Hierarchize(
{
[Employees].[All Employees].[Sheri Nowmer],
[Employees].[All Employees].[Sheri Nowmer].DataMember,
[Employees].[All Employees].[Sheri Nowmer].[Rebecca Kanagaki],
[Employees].[All Employees].[Sheri Nowmer].[Roberta Damstra]
}
)
, "* **")
 on  1 
from HR



Ожидался результат
Код: plaintext
1.
2.
3.
4.
[Employees]                                   [Measures].[Employee Salary]
[Sheri Nowmer *]                            864.00
[Sheri Nowmer].[Rebecca Kanagaki]   162.00
[Sheri Nowmer].[Roberta Damstra]     270.00
(Sheri Nowmer data)                       864.00

Получили
Код: plaintext
1.
2.
3.
4.
[Employees]                                   [Measures].[Employee Salary]
[Sheri Nowmer *]                            1527.12
[Sheri Nowmer].[Rebecca Kanagaki]    162.00
[Sheri Nowmer].[Roberta Damstra]      270.00
(Sheri Nowmer data)                        864.00
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Сustom Member Formula и VisualTotals???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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