Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей / 6 сообщений из 6, страница 1 из 1
23.06.2003, 12:05
    #32188960
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей
Таким образом я считаю входящий остаток на период, используя всю иерархию измерения Дата. [Изменение остатка количество] - это итоговое изменение остатка: Приход - Расход. Но при работе с уровнем Дата при вышестоящей неделе которая не целиком вписывается в месяц возникают проблемы, я думаю эта проблема известна тем кто таким же образом считает остатки. При этом метод
Код: plaintext
Sum(PeriodsToDate([Дата].[(All)], [Дата].CurrentMember.PrevMember), [Measures].[Изменение остатка количество])
работает корректно. Возможно решение: начиная с уровня Неделя работать не с агрегатами недели а по конкретным дням, убрать вообще уровень Неделя. Вопросы: есть ли метод решения проблемы эффективней, есть ли решение этой проблемы иное ???
Код: 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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
 -- посмотрим есть ли предок на уровне квартал
 
iif (Ancestor([Дата].CurrentMember, [Дата].[Квартал]) is NULL,
 -- нет предка на уровне квартал, видимо либо года либо выше, просуммируем
 
Sum(PeriodsToDate([Дата].[(All)], [Дата].CurrentMember.PrevMember), [Measures].[Изменение остатка количество]),
 -- есть предок на уровне квартала (квартал или ниже), просуммируем до уровня квартал включительно
 
 -- просуммируем до предыдущего года
 
Sum(PeriodsToDate([Дата].[(All)], Ancestor([Дата].CurrentMember, [Дата].[Год]).PrevMember), [Measures].[Изменение остатка количество]) +
 -- просуммируем до предыдущего квартала
 
iif([Дата].CurrentMember is OpeningPeriod([Дата].[Квартал], Ancestor([Дата].CurrentMember, [Дата].[Год])),
 -- является первым кварталом в году, предыдущего квартала нет, ничего не суммируем
 
NULL,
 -- не является первым кварталом в году, предыдущий квартал есть, просуммируем до предыдущего квартала
 
Sum(PeriodsToDate([Дата].[Год], Ancestor([Дата].CurrentMember, [Дата].[Квартал]).PrevMember), [Measures].[Изменение остатка количество])) +
 -- посмотрим есть ли предок на уровне месяц
 
iif (Ancestor([Дата].CurrentMember, [Дата].[Месяц]) is NULL,
 -- предка на уровне месяц нет, суммировать нечего
 
NULL,
 -- предок на уровне месяца есть (месяц или ниже), просуммируем до предыдущего месяца
 
iif([Дата].CurrentMember is OpeningPeriod([Дата].[Месяц], Ancestor([Дата].CurrentMember, [Дата].[Квартал])),
 -- первый месяц в квартале суммировать нечего
 
NULL,
 -- не является первым месяцем в квартале, предыдущий месяц есть, просуммируем до предыдущего месяца
 
Sum(PeriodsToDate([Дата].[Квартал], Ancestor([Дата].CurrentMember, [Дата].[Месяц]).PrevMember), [Measures].[Изменение остатка количество])) +
 -- посмотрим есть ли предок на уровне неделя
 
iif (Ancestor([Дата].CurrentMember, [Дата].[Неделя]) is NULL,
 -- предка на уровне неделя нет, суммировать нечего
 
NULL,
 -- предок на уровне неделя есть (неделя или ниже), просуммируем до предыдущей недели
 
iif([Дата].CurrentMember is OpeningPeriod([Дата].[Неделя], Ancestor([Дата].CurrentMember, [Дата].[Месяц])),
 -- первая неделя в месяце суммировать нечего
 
NULL,
 -- не является первой неделей в месяце, предыдущая неделя есть, просуммируем до предыдущей недели
 
Sum(PeriodsToDate([Дата].[Месяц], Ancestor([Дата].CurrentMember, [Дата].[Неделя]).PrevMember), [Measures].[Изменение остатка количество])) +
 -- посмотрим есть ли предок на уровне дата (дата, ниже некуда)
 
iif (Ancestor([Дата].CurrentMember, [Дата].[Дата]) is NULL,
 -- предка на уровне дата нет
 
NULL,
 -- предок на уровне дата есть, просуммируем до предыдущей даты
 
iif([Дата].CurrentMember is OpeningPeriod([Дата].[Дата], Ancestor([Дата].CurrentMember, [Дата].[Неделя])),
 -- первая дата недели, суммировать нечего
 
NULL,
 -- не является первой датой недели, предыдущая дата есть, просуммируем до предыдущей даты
 
Sum(PeriodsToDate([Дата].[Неделя], Ancestor([Дата].CurrentMember, [Дата].[Дата]).PrevMember), [Measures].[Изменение остатка количество]))))))
...
Рейтинг: 0 / 0
23.06.2003, 12:57
    #32189046
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей
Где же "проповедники" гибкого использования иерархии Дата при расчете остатков ??? Или не так считаю ???
...
Рейтинг: 0 / 0
23.06.2003, 15:26
    #32189292
Jurii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей
Опытные "проповедники" ручками MDX не пишут, а создают его визуальными средствами :)
...
Рейтинг: 0 / 0
23.06.2003, 15:30
    #32189298
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей
Замени недели на декады и не мучайся.
...
Рейтинг: 0 / 0
23.06.2003, 15:30
    #32189299
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей
Жаль.
...
Рейтинг: 0 / 0
24.06.2003, 09:50
    #32189909
Вжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей
Я бы заменил, но бизнес специфичен - еженедельная пресса нужна динамика в рамках недели...
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Расчет остатков с ипользованием иерархии Дата, некоторые проблемы с Неделей / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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