powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Получить предыдущий member
2 сообщений из 2, страница 1 из 1
Получить предыдущий member
    #33733577
Fec un Tues
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AS 2000. Тестовый куб Остатки .
Уровни измерения Период : Год, Месяц.

Мера Кол содержит конечные остатки на каждый месяц (она скрыта, поскольку содержит бессмысленные агрегации).

Виртуальные измерения Год периода и Месяц периода соответствуют уровням измерения Период .

Calculated member Количество :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
// период задается пересечением измерений Период, Год периода и Месяц периода
(
	Tail(
		Filter(
			Descendants( [Период].CurrentMember, [Период].[Месяц], SELF ),
			(
				[Месяц периода].CurrentMember.Level is [Месяц периода].[(All)]
				OR [Период].CurrentMember.Name = [Месяц периода].CurrentMember.Name
			) AND (
				[Год периода].CurrentMember.Level is [Год периода].[(All)]
				OR [Период].CurrentMember.Parent.Name = [Год периода].CurrentMember.Name
			)
		)
	).Item(  0  ).Item(  0  )
	, [Measures].[Кол]
)

Это выражение работает правильно (наверно, его можно улучшить?). Вопрос следующий:

Хочу построить CM Количество нач так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
// начальный остаток - это конечный остаток предыдущего периода
(
	Tail(
		Filter(
			Descendants( [Период].CurrentMember, [Период].[Месяц], SELF ),
			(
				[Месяц периода].CurrentMember.Level is [Месяц периода].[(All)]
				OR [Период].CurrentMember.Name = [Месяц периода].CurrentMember.Name
			) AND (
				[Год периода].CurrentMember.Level is [Год периода].[(All)]
				OR [Период].CurrentMember.Parent.Name = [Год периода].CurrentMember.Name
			)
		)
	).Item(  0  ).Item(  0  ).PrevMember
	, [Measures].[Кол]
)

Однако получаю нули вместо остатков на начало .

Мои предположения о моей ошибке:
1. Второй Item( 0 ) возвращает member НЕ измерения Период .
2. PrevMember возвращает предыдущий member из set'а, получаемого от filter, а не предыдущий member в измерении Период .
...
Рейтинг: 0 / 0
Получить предыдущий member
    #33734596
Fec un Tues
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отставить. Ошибка найдена. Правильно работает так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
(
	Tail(
		Filter(
			Descendants( [Период].CurrentMember, [Период].[Месяц], SELF ),
			(
				[Месяц периода].CurrentMember.Level is [Месяц периода].[(All)]
				OR [Период].CurrentMember.Name = [Месяц периода].CurrentMember.Name
			) AND (
				[Год периода].CurrentMember.Level is [Год периода].[(All)]
				OR [Период].CurrentMember.Parent.Name = [Год периода].CurrentMember.Name
			)
		)
	).Item(  0  ).Item(  0  ).PrevMember
	, [Год периода].[Все] // ДОБАВЛЕНО
	, [Месяц периода].[Все] // ДОБАВЛЕНО
	, [Measures].[Кол]
)

Ни у кого не возникло замечаний? Может быть лучше написать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sum(
	Tail(
		Filter(
			Descendants( [Период].CurrentMember, [Период].[Месяц], SELF ),
			(
				[Месяц периода].CurrentMember.Level is [Месяц периода].[(All)]
				OR [Период].CurrentMember.Name = [Месяц периода].CurrentMember.Name
			) AND (
				[Год периода].CurrentMember.Level is [Год периода].[(All)]
				OR [Период].CurrentMember.Parent.Name = [Год периода].CurrentMember.Name
			)
		)
	)
	, ( [Период].CurrentMember.PrevMember, [Год периода].[Все], [Месяц периода].[Все], [Measures].[Кол] )
)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Получить предыдущий member
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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