powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
13 сообщений из 13, страница 1 из 1
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880646
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа,

есть куб, который строится по таблице складских проводок. В кубе есть Calculated Member "Остатки на начало", который вычисляется по рекомендованной на этом форуме формуле:
sum(Ascendants([Time].CurrentMember),
(sum([Time].FirstSibling :[Time].CurrentMember,
[Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) +
[Measures].[ПриходРасход]

Куб смотрят через OWC PivotTable 10

Все бы хорошо, да вот приспичило пользователям выбирать несколько элементов во временном измерении.
Т.е. если например выбрать только один месяц - Январь, то все хорошо: показываются остатки на начало января, оборот за январь
А если пользователь выбирает галками Январь и Февраль, то в начальных остатках отображается: [Остаток на начало Января] + [Остаток на начало Февраля], [Оборот за Январь] + [Оборот за Февраль]
А пользователь, естественно, ожидает увидеть:
[Остаток на начало Января], [Оборот за Январь] + [Оборот за Февраль]

Может есть у кого идеи, как можно вывернуться чтобы так работало?
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880728
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bio_unitГоспода,

есть куб, который строится по таблице складских проводок. В кубе есть Calculated Member "Остатки на начало", который вычисляется по рекомендованной на этом форуме формуле:
sum(Ascendants([Time].CurrentMember),
(sum([Time].FirstSibling :[Time].CurrentMember,
[Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) +
[Measures].[ПриходРасход]

Куб смотрят через OWC PivotTable 10

Все бы хорошо, да вот приспичило пользователям выбирать несколько элементов во временном измерении.
Т.е. если например выбрать только один месяц - Январь, то все хорошо: показываются остатки на начало января, оборот за январь
А если пользователь выбирает галками Январь и Февраль, то в начальных остатках отображается: [Остаток на начало Января] + [Остаток на начало Февраля], [Оборот за Январь] + [Оборот за Февраль]
А пользователь, естественно, ожидает увидеть:
[Остаток на начало Января], [Оборот за Январь] + [Оборот за Февраль]

Может есть у кого идеи, как можно вывернуться чтобы так работало?


Ну здравствуй. Да у меня было такое тоже. Что я тебе могу сказать. Это связанно не только с работой по иерархии но и по подсчету уникальных сторок в нутри куба. Просто когда ты выбираешь два среза куба (а январь и февраль они и есть) то все что умеет олап это их сложить.
Так что если мультиселек то все складиваеться. если они хотять увидеть продажи за 2 месяца и остатки на какой то месяц, то множно только создать вычесляемую ячейку которая им покажет остаток на этот месяц. Т.е. научить их делать эту ячейку или просто поставить им отчет который будет налету считать. Олап то хранит уже ответы, и все тютю гриня как задал шаг так и шагай по нему.

Да к стати про УМНЫЙ ЮКОН, он как с мульти селектом умеет работать с подсчетом уникальных значений, и не терять иерархию при мультиселекте, что бы понять кто же там младший???
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880778
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OLAPMASTER[quot bio_unit] Т.е. научить их делать эту ячейку или просто поставить им отчет который будет налету считать. Олап то хранит уже ответы, и все тютю гриня как задал шаг так и шагай по нему.


Спасибо за быстрый ответ,
честно говоря я так и сделал :)
при открытии формы делаю AddTotal, перехватываю событие Query и в формулу этого Total'a вместо CurrentMember подставляю самый ранний из выбранных периодов.
Да вот только при этом после некоторых манипуляцый с измерениями, перевыбором периодов, падает этот OWC с Exception. Просто тихо падает...
Раз на раз не приходится, т.е. один раз может упасть при выборе одних фильтров, другой раз - уже при других
Раньше грешил, что может не правильно работают с объектами OWC, но вроде все уже отладил, и остальсь теперь только грешить на сам OWC, что не любит он когда ему в Calculated Member часто программным образом формулу меняют.
Вот и решил узнать может это все штатными средствами сделать можно без программирования OWC.
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880817
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bio_unit OLAPMASTER[quot bio_unit] Т.е. научить их делать эту ячейку или просто поставить им отчет который будет налету считать. Олап то хранит уже ответы, и все тютю гриня как задал шаг так и шагай по нему.


Спасибо за быстрый ответ,
честно говоря я так и сделал :)
при открытии формы делаю AddTotal, перехватываю событие Query и в формулу этого Total'a вместо CurrentMember подставляю самый ранний из выбранных периодов.
Да вот только при этом после некоторых манипуляцый с измерениями, перевыбором периодов, падает этот OWC с Exception. Просто тихо падает...
Раз на раз не приходится, т.е. один раз может упасть при выборе одних фильтров, другой раз - уже при других
Раньше грешил, что может не правильно работают с объектами OWC, но вроде все уже отладил, и остальсь теперь только грешить на сам OWC, что не любит он когда ему в Calculated Member часто программным образом формулу меняют.
Вот и решил узнать может это все штатными средствами сделать можно без программирования OWC.

Ну вот программирование OWC это ваше просто самоубийство. Я вот так и не овладел этим искуством. И даже не хочется есть продукты которые на лету кубик соберают в памяти и жрут ее немеренно. Вообщем это проблема извечна.
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880842
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть формула попроще
[src]SUM(PeriodsToDate([Time].[(All)],Time.CurrentMember),[ПриходРасход])/SRC]

Но и она вас не спасёт, т.к. (на сколько я понял) поле Time стоит в фильтре, а если там выбрать несколько мемберов, то OWC10 генерит такой mdx (кстати, не поленитесь выложить его сюда), который складывает остатки за разные месяцы.

Как вариант надо перетащить поле Time в заголовки строк или столбцов, данных будет немного поболе, зато остаток правильный.
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880850
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OLAPMASTER
Ну вот программирование OWC это ваше просто самоубийство. Я вот так и не овладел этим искуством. И даже не хочется есть продукты которые на лету кубик соберают в памяти и жрут ее немеренно. Вообщем это проблема извечна.

Честно говоря не вижу разницы между опеределением Calculated Member на сервере и добавлением вычисляемого поля в PivotTable.
По-моему, и то и другое вычисляется на клиенте. Или я не прав?
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880853
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTERДа к стати про УМНЫЙ ЮКОН, он как с мульти селектом умеет работать с подсчетом уникальных значений, и не терять иерархию при мультиселекте, что бы понять кто же там младший???

Мультиселект обрабатывает OWC, который не силён в MDX, и всё что остаётся юкону - это быстро обработать "кривой" MDX. Т.е. юкон не поможет в этом случае, а вот OWC12 - может быть
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880859
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukovесть формула попроще
[src]SUM(PeriodsToDate([Time].[(All)],Time.CurrentMember),[ПриходРасход])/SRC]

Но и она вас не спасёт, т.к. (на сколько я понял) поле Time стоит в фильтре, а если там выбрать несколько мемберов, то OWC10 генерит такой mdx (кстати, не поленитесь выложить его сюда), который складывает остатки за разные месяцы.

Как вариант надо перетащить поле Time в заголовки строк или столбцов, данных будет немного поболе, зато остаток правильный.

Да, именно так, поле Time в фильтре и OWC складывает отстатки за разные месяцы.

А вот как mdx в OWC посмотреть я не знаю. Вроде mdx должен возвращаться свойством CommandText, но оно почему-то все время пустое.
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880866
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32880878
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukov поиск рулит

Спасибо!
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32881968
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukovесть формула попроще
Код: plaintext
SUM(PeriodsToDate([Time].[(All)],Time.CurrentMember),[ПриходРасход])

Но и она вас не спасёт, т.к. (на сколько я понял) поле Time стоит в фильтре, а если там выбрать несколько мемберов, то OWC10 генерит такой mdx (кстати, не поленитесь выложить его сюда), который складывает остатки за разные месяцы.

Как вариант надо перетащить поле Time в заголовки строк или столбцов, данных будет немного поболе, зато остаток правильный.

Господа,

Дальнейшее исследование выяснило, что я ошибался насчет того, что если на Time стоит мультифильтр, то начальные остатки за несколько выбранных периодов складываются.
Сумма в начальном остатке как оказалось зависит от того какая формула в Calculated member ОстНаНачалоКол.
Если формула:
Код: plaintext
1.
Sum(PeriodsToDate([Период].[Все], 
[Период].CurrentMember.PrevMember), [Measures].[Количество операции])
то, если установлен мультифильтр, в столбце ОстНаНачалоКол пустые значения.
Если формула:
Код: plaintext
1.
Sum(PeriodsToDate([Период].[Все], [Период].CurrentMember), 
[Measures].[Количество операции]) - [Measures].[Количество операции]
то, если установлен мультифильтр, в столбце ОстНаНачалоКол значение соответсвенно равно -[Measures].[Количество операции] за выбранные периоды

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

При установленом мультифильтре генерится такой MDX:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE SESSION
MEMBER [InvTurnover].[Период].Pivot46Hier6MultiFilter__ AS 
'AGGREGATE({[Период].[Все Период].[2004].[1. Квартал], 
	     [Период].[Все Период].[2004].[2. Квартал]})'
CREATE SESSION
SET [InvTurnover].Pivot46Axis1Set0 AS 
'{ { [Номенклатура].[Все Номенклатура] }, 
AddCalculatedMembers([Номенклатура].[Номенклатура].MEMBERS) } '
SELECT 
	NON EMPTY Pivot46Axis1Set0
	DIMENSION PROPERTIES MEMBER_NAME ON COLUMNS, 
	{ 
		[Measures].[ОстНаНачалоКол], 
		[Measures].[ПриходКол], 
		[Measures].[ПриходСумма], 
		[Measures].[РасходКол], 
		[Measures].[РасходСумма]
	}
	ON ROWS
	FROM [InvTurnover]
	WHERE 
	(
		Pivot46Hier6MultiFilter__
	)

Если мультифильтр не установлен, то MDX такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE SESSION
SET [InvTurnover].Pivot47Axis1Set0 AS 
'{ { [Номенклатура].[Все Номенклатура] }, 
AddCalculatedMembers([Номенклатура].[Номенклатура].MEMBERS) } '
SELECT 
	NON EMPTY Pivot47Axis1Set0
	DIMENSION PROPERTIES MEMBER_NAME ON COLUMNS, 
	{ 
		[Measures].[ОстНаНачалоКол], 
		[Measures].[ПриходКол], 
		[Measures].[ПриходСумма], 
		[Measures].[РасходКол], 
		[Measures].[РасходСумма]
	}
	ON ROWS
	FROM [InvTurnover]
	WHERE 
	(
		[Период].[Все Период].[ 2004 ].[ 2 . Квартал]
	)

т.е. при мультифильре я так понимаю OWC создает какой-то member где агрегированны выбранные периоды.
Интересно как в этом случае обрабатывается [Период].CurrentMember в формуле? На что ссылается CurrentMember?
Может кто знает как в этом случае построить формулу, чтобы вместо CurrentMember выбрать самый ранний период?
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32882426
bio_unit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, что это значит?
Код: plaintext
1.
2.
MEMBER [InvTurnover].[Период].Pivot46Hier6MultiFilter__ AS 
'AGGREGATE({[Период].[Все Период].[2004].[1. Квартал], 
	     [Период].[Все Период].[2004].[2. Квартал]})'

По какому ключевому слову в BOL искать про это?
...
Рейтинг: 0 / 0
OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
    #32882703
авторПо какому ключевому слову в BOL искать про это?
Про что конкретно?
Если в общем то "Using WITH to Create Calculated Members".
Если по наполнению то "Aggregate"
Но BOL насыщенностью пояснений не блещет. Так шо лучше Споффффорда отыскать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / OWC, PivotTable, выбор нескольких временных периодов и начальные остатки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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