powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Количество дней с условием на период
5 сообщений из 5, страница 1 из 1
Количество дней с условием на период
    #33356600
Moriarti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, и до меня дошла эта проблема :-)
Довольно много таких вопросов на форуме, но что-то не до конца все же понимаю...

Задача: посчитать среднюю сумму продаж,
для этого задумываю подсчитать количество дней и на нее поделить сумм.
И вот, с количеством дней загвоздка, до определенного момента все полчалось:

1) создал Calculated Member

Код: plaintext
Count(Descendants([Период].CurrentMember, [Период].[Day]))

Mdx:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
With
  member [Покупатели].[Итого] As  'Aggregate({[Покупатели].[All Покупатели].Children})'
  member [Товары].[Итого] As  'Aggregate({[Товары].[All Товары].Children})'
select
  NON EMPTY  {[Покупатели].CHILDREN, [Покупатели].[Итого]} on Columns,
  NON EMPTY  {[Товары].CHILDREN, [Товары].[Итого]} on Rows
from
  [Анализ продаж]
Where
  ([Measures].[Количество дней])

Выводит количество дней правильно.

Но стоит добавить условие на период:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
With
  member [Покупатели].[Итого] As  'Aggregate({[Покупатели].[All Покупатели].Children})'
  member [Товары].[Итого] As  'Aggregate({[Товары].[All Товары].Children})'
  member [Период].[Период_Условие] as 'Aggregate({[Период].[2003]})'
select
  NON EMPTY  {[Покупатели].CHILDREN, [Покупатели].[Итого]} on Columns,
  NON EMPTY  {[Товары].CHILDREN, [Товары].[Итого]} on Rows
from
  [Анализ продаж]
Where
  ([Период_Условие], [Measures].[Количество дней])

Как количество дней становится = 0!
Как же добится правильного расчета количества дней в указанном периоде?
...
Рейтинг: 0 / 0
Количество дней с условием на период
    #33356712
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте

member [Период].[Период_Условие] as 'Aggregate({[Период].[2003]})', SOLVE_ORDER = 1
...
Рейтинг: 0 / 0
Количество дней с условием на период
    #33356751
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у мембера [Период].[Период_Условие] нет ни одного descendants, поэтому вполне логично, что [Количество дней] возвращает ноль.
если вы собираетесь фильтровать только по одному мемберу измерения Период, то может это в where перенести?
задача нахождения множества элементов, по которым происходит Aggregate, уже много раз обсуждалась и, имхо, не решаема
В вашем конкретном случае можно поступить так:
делаете set, с элементами, которые надо сагрегировать, а формулку для Количество дней пишете такую:
Код: plaintext
Generate(mySet1,Descendants(mySet1.Current, [Период].[Day])).Count
...
Рейтинг: 0 / 0
Количество дней с условием на период
    #33357838
Moriarti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireпопробуйте

member [Период].[Период_Условие] as 'Aggregate({[Период].[2003]})', SOLVE_ORDER = 1

Так получилось, но убрав Aggregate

Код: plaintext
member [Период].[Период_Условие] as '[Период].[2003]', SOLVE_ORDER =  1 

работает, но только если выбрана "одна дата"

при выборе, например, нескольких лет [Период].[2003], [Период].[2004] - уже требуется писать Aggregate

>В вашем конкретном случае можно поступить так:
>делаете set, с элементами, которые надо сагрегировать, а формулку для
>Количество дней пишете такую:

set делать в calc members или в MDX?
можно поподробнее, set'ы еще не использовал, признаюсь
...
Рейтинг: 0 / 0
Количество дней с условием на период
    #33357925
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если убрать Aggregate, то можно и без SOLVE_ORDER :-) как я и предлагал
с setaми есть 2 варианта
1. генерировать прям в тексте запроса:
Код: plaintext
Generate({[Период].[ 2003 ],[Период].[ 2004 ],...} as mySet1,Descendants(mySet1.Current, [Период].[Day])).Count
2. сделать отдельный сет:
Код: plaintext
With set mySet1 as '{[Период].[2003],[Период].[2004],...}'
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Количество дней с условием на период
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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