Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Непонятна работа с уровнями измерения Дата в CM / 13 сообщений из 13, страница 1 из 1
08.10.2004, 11:15
    #32729440
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Такая задача: пользователи выбирают в МДХ редакторе дату начала и окончания отчета, далее нужно для расчета остатка на конец выбранного периода определить тьюпл (Вычисляемая мера остатка, Дата окончания периода). При расчете остатка в вычисляемой мере необходимо определение уровня измерения Дата (Год, Квартал, Месяц, Неделя, Дата). Код МДХ для работы указан ниже. Видно как определен MEMBER [Дата].[Дата окончания периода]. При таком подходе расчет в MEMBER [Measures].[Остаток на конец] получается некорректным, т.к. уровень мембера [Дата].[Дата окончания периода] в измерении Дата получается не определен. Почему он не определен - непонятно, т.к. в сете, из которого берется этот мембер все элементы с нижнего уровня и уровень ясен.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
WITH
SET [Период] AS '{
-- здесь необходимо указать дату начала периода построения отчета
[Дата].[Год].&[2004].&[32004].&[092004].&[372004].&[07.09.2004]
-- окончание указания даты начала построения отчета
:
-- здесь необходимо указать дату окончания периода построения отчета
[Дата].[Год].&[2004].&[42004].&[102004].&[412004].&[07.10.2004]
-- конец указания даты окончания построения отчета
}'
MEMBER [Дата].[Дата окончания периода] AS 'Tail([Период]).Item(0)'
MEMBER [Measures].[Остаток на конец] AS'([Measures].[Остаток Количество (кон.пер.), [Дата].[Дата окончания периода])'
Однако все работает как надо в при замене двух последних строк на следующее:
Код: plaintext
1.
SET [Дата окончания периода] AS 'Tail([Период])'
MEMBER [Measures].[Остаток на конец] AS'([Measures].[Остаток Количество (кон.пер.), [Дата окончания периода].Item(0))'
Вопрос - почему в первом случае работает не корректно? MS AS SP3.
...
Рейтинг: 0 / 0
08.10.2004, 11:26
    #32729494
олапист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
а ежели явно указать Parent Member при содании CM?
...
Рейтинг: 0 / 0
08.10.2004, 11:34
    #32729523
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Может оно как-то и можно, но у меня не получилось. Хочется чтобы пользователь задавал только начало и конец периода, соотвественно Парент мембер надо получать автоматом и добавлять его к последнему мемберу в сете.
...
Рейтинг: 0 / 0
08.10.2004, 12:02
    #32729623
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Я часто встречался с неявными завистмостями, если один СМ использует другой, посему полный МДХ в студию, если не жалко.
...
Рейтинг: 0 / 0
08.10.2004, 12:39
    #32729735
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
WITH

SET [Период] AS '{
-- здесь необходимо указать дату начала периода построения отчета
[Дата].[Год].&[2004].&[12004].&[012004].&[012004].&[03.01.2004]
-- окончание указания даты начала построения отчета
:
-- здесь необходимо указать дату окончания периода построения отчета
[Дата].[Год].&[2004].&[12004].&[012004].&[022004].&[09.01.2004]
-- конец указания даты окончания построения отчета
}'
SET [Список центров УТ] AS '{
-- здесь необходимо указать список Центров УТ через запятую для построения отчета или оставить текст для всех Центров УТ
Descendants([Центры УТ].[Все Центры УТ],, LEAVES)
-- конец указания списка Центров УТ
}'
MEMBER [Дата].[Период свернутый] AS 'AGGREGATE([Период])'
SET [Дата окончания периода] AS 'Tail([Период])'
MEMBER [Центры УТ].[Список центров УТ свернутый] AS 'AGGREGATE([Список центров УТ])'
MEMBER [Measures].[Остаток на конец] AS'([Measures].[Остаток Количество (кон.пер.) (остатки)], [Дата окончания периода].Item(0))'

SELECT
{{
[Список центров УТ] 
}
*
{
 -- здесь необходимо перечислить через запятую значения показателей, которые необходимо вывести в отчет, остальные можно удалить 
[Measures].[Продажи Количество],
[Measures].[Остаток на конец]
 -- окончание перечисления показателей 
}}

ON COLUMNS,

Filter(Extract(NonEmptyCrossJoin(DESCENDANTS(
 -- здесь необходимо указать группу номенклатуры 
[Номенклатура].&[   FG8Ц]
 -- конец указания группы номенклатуры 
,, LEAVES) , {
 -- здесь необходимо указать контрагента для построения отчета 
[Контрагенты].[Контрагенты].&[     A]
 -- конец указания контрагента для построения отчета 
}, {[Дата].[Все Периоды]}), [Номенклатура]), (([Measures].[Продажи Количество], [Центры УТ].[Список центров УТ свернутый]) >  0 ) or (([Measures].[Остаток на конец], [Центры УТ].[Список центров УТ свернутый]) >  0 ))

ON ROWS

FROM
[Вся деятельность]

WHERE
(
[Дата].[Период свернутый]
)
Вот полный МДХ. Рабочий вариант. По другому MEMBER [Measures].[Остаток на конец] AS'([Measures].[Остаток Количество (кон.пер.) (остатки)], [Дата окончания периода].Item(0))', не через SET вместо конкретного мембера измерения Дата определить не получается.
...
Рейтинг: 0 / 0
08.10.2004, 12:48
    #32729768
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Measures].[Остаток Количество (кон.пер.) (остатки) содержит такое, где все и рушится:
Код: plaintext
1.
2.
3.
4.
iif (Ancestor([Дата].CurrentMember, [Дата].[Квартал]) is NULL,
...
iif (Ancestor([Дата].CurrentMember, [Дата].[Месяц]) is NULL,
...
...
Рейтинг: 0 / 0
08.10.2004, 12:53
    #32729787
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Я когда то с подобной бодягой сталкивался, что Item(0) не распознавался как Member.

Я это обошел тем, что "в лоб" написал в MDX конкретного мембера.

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


Хотелось бы услышать по этому поводу мнение уважаемого Моши. Он то точно знает в сем дело. Мы де модем только с WorkAround извратиться.
...
Рейтинг: 0 / 0
08.10.2004, 12:54
    #32729794
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
ВжикMeasures].[Остаток Количество (кон.пер.) (остатки) содержит такое, где все и рушится:
Код: plaintext
1.
2.
3.
4.
iif (Ancestor([Дата].CurrentMember, [Дата].[Квартал]) is NULL,
...
iif (Ancestor([Дата].CurrentMember, [Дата].[Месяц]) is NULL,
...



Поясните о чем это.

что стоит выражении для
Код: plaintext
[Measures].[Остаток Количество (кон.пер.) (остатки)]
...
Рейтинг: 0 / 0
08.10.2004, 13:06
    #32729833
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Не совсем понял вопрос.
...
Рейтинг: 0 / 0
08.10.2004, 13:08
    #32729841
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
что стоит в выражении для

[Measures].[Остаток Количество (кон.пер.) (остатки)]

какая формула.
...
Рейтинг: 0 / 0
08.10.2004, 14:15
    #32730059
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Там есть такое:
Код: plaintext
1.
2.
iif (Ancestor([Дата].CurrentMember, [Дата].[Квартал]) is NULL,
 -- нет предка на уровне квартал, видимо либо года либо выше, просуммируем 
Sum(PeriodsToDate([Дата].[(All)], [Дата].CurrentMember.PrevMember), [Measures].[Изменение остатка количество])...
[Measures].[Изменение остатка количество] - физическая мера. Одним словом там работа с уровнями текущего элемента измерения Дата.
...
Рейтинг: 0 / 0
08.10.2004, 15:33
    #32730252
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
ВжикТам есть такое:
Код: plaintext
1.
2.
iif (Ancestor([Дата].CurrentMember, [Дата].[Квартал]) is NULL,
 -- нет предка на уровне квартал, видимо либо года либо выше, просуммируем 
Sum(PeriodsToDate([Дата].[(All)], [Дата].CurrentMember.PrevMember), [Measures].[Изменение остатка количество])...
[Measures].[Изменение остатка количество] - физическая мера. Одним словом там работа с уровнями текущего элемента измерения Дата.

я так понимаю, что у вас только одно измерение времени? Или есть? (финансовый год, календарная неделя)
...
Рейтинг: 0 / 0
08.10.2004, 16:38
    #32730421
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятна работа с уровнями измерения Дата в CM
Вы правильно понимаете - измерение времени одно. В нем уровни Год, Квартал, Месяц, Неделя, Число.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Непонятна работа с уровнями измерения Дата в CM / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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