powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MS AS вычесляю период начала и конец.
22 сообщений из 22, страница 1 из 1
MS AS вычесляю период начала и конец.
    #32939023
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверняка кто то сталкивался с проблемой что в одном кубе нужно отобразить продажи за какой то произвольный период и остаток на начала этого периода и конец.
Так вот у меня есть решение.

Нада создать дату не как иерархию а с одним уровнем где будут все дни.
И ее не трогать сделать visible - false.

Далее показатель 1

Остаток на начало периода
SUM(HEAD(Filter(CrossJoin({[Measures].[Sales Val]},Descendants([Salesdate 1].currentmember,[Salesdate 1].levels(1))), NOT IsEmpty([Salesdate 1].currentmember)),1))

Сдесь очень долго мучился с NonEmptyCrossJoin ну не как не хотел он мне выдавать не пустых, пришлось фильтр надеть на него.


Остаток на конец периода
SUM(HEAD(Filter(CrossJoin({[Measures].[Sales Val]},Descendants([Salesdate 1].currentmember,[Salesdate 1].levels(1))), NOT IsEmpty([Salesdate 1].currentmember)),
count(Filter(CrossJoin({[Measures].[Sales Val]},Descendants([Salesdate 1].currentmember,[Salesdate 1].levels(1))), NOT IsEmpty([Salesdate 1].currentmember))))) -
SUM(HEAD(Filter(CrossJoin({[Measures].[Sales Val]},Descendants([Salesdate 1].currentmember,[Salesdate 1].levels(1))), NOT IsEmpty([Salesdate 1].currentmember)),
count(Filter(CrossJoin({[Measures].[Sales Val]},Descendants([Salesdate 1].currentmember,[Salesdate 1].levels(1))), NOT IsEmpty([Salesdate 1].currentmember)))-1))

Сдесь все тоже самое только от НЕAD отнимаю предидущую сумму.

Пробовал выделять произвольные периоды(мультиселект) и все работает.

Для этот помогла формула для вычесления

сount(crossjoin({population},descendants(city.currentmember,city.[city name])),excludeempty)

Автора уже не помню если он зайдет ему огромное спасибо за помошь!!

Есть возможность оптимизировать??
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #32939137
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTERСдесь очень долго мучился с NonEmptyCrossJoin ну не как не хотел он мне выдавать не пустых, пришлось фильтр надеть на него.

Для этот помогла формула для вычесления
сount(crossjoin({population},descendants(city.currentmember,city.[city name])),excludeempty)
Автора уже не помню если он зайдет ему огромное спасибо за помошь!!
Есть возможность оптимизировать??

Формула моя, но г-н backfire советовал использовать
NonEmptyCrossJoin({population},descendants(city.currentmember,city.[city name])).Count
Всё-таки Filter+CrossJoin едят много ресурсов.

При мультиселкте бывают "дыры"? т.е. выбираются ли только январь и апрель или всегда январь,февраль,март,апрель?

Кроме того, какой глубокий смысл в SUM(HEAD( ... ),1)) ?

Для оптимизации, можно повторно используемые множества засунуть в named sets, аналогично Count(...) можно засунуть в Calc. Member
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #32939342
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukov OLAPMASTERСдесь очень долго мучился с NonEmptyCrossJoin ну не как не хотел он мне выдавать не пустых, пришлось фильтр надеть на него.

Для этот помогла формула для вычесления
сount(crossjoin({population},descendants(city.currentmember,city.[city name])),excludeempty)
Автора уже не помню если он зайдет ему огромное спасибо за помошь!!
Есть возможность оптимизировать??

Формула моя, но г-н backfire советовал использовать
NonEmptyCrossJoin({population},descendants(city.currentmember,city.[city name])).Count
Всё-таки Filter+CrossJoin едят много ресурсов.

При мультиселкте бывают "дыры"? т.е. выбираются ли только январь и апрель или всегда январь,февраль,март,апрель?

Кроме того, какой глубокий смысл в SUM(HEAD( ... ),1)) ?

Для оптимизации, можно повторно используемые множества засунуть в named sets, аналогично Count(...) можно засунуть в Calc. Member


Дырок для них я не видел, что хочешь выбирай он тебе даст 1 и последнего в множестве.
NonEmptyCrossJoin неработает вернул мне все множество, поэтому и filter поставил.
А вот name Set это хорошо, попробую.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #32939407
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTER Dmitry BiryukovПри мультиселкте бывают "дыры"? т.е. выбираются ли только январь и апрель или всегда январь,февраль,март,апрель?

Кроме того, какой глубокий смысл в SUM(HEAD(( ... ),1)) ?
Дырок для них я не видел, что хочешь выбирай он тебе даст 1 и последнего в множестве.

Я имел в виду: есть ли у пользователей причины выбирать периоды "не подряд"? например отдельно январь и отдельно апрель без февраля и марта?
(есть более быстрый алгоритм в случае "сплошных" периодов)

Вместо SUM(HEAD(( ... ),1)) можно просто писать просто HEAD(( ... ),1)
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #32939452
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukov OLAPMASTER Dmitry BiryukovПри мультиселкте бывают "дыры"? т.е. выбираются ли только январь и апрель или всегда январь,февраль,март,апрель?

Кроме того, какой глубокий смысл в SUM(HEAD(( ... ),1)) ?
Дырок для них я не видел, что хочешь выбирай он тебе даст 1 и последнего в множестве.

Я имел в виду: есть ли у пользователей причины выбирать периоды "не подряд"? например отдельно январь и отдельно апрель без февраля и марта?
(есть более быстрый алгоритм в случае "сплошных" периодов)

Вместо SUM(HEAD(( ... ),1)) можно просто писать просто HEAD(( ... ),1)

Получаеться не гибкое решение, так как я как раз расчитовал на не сплощные периоды, на вот например исключая выходные дни, или просто по выходным дням. Поэтому я и сделал Sum(HEAD((...)1)).
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #32942222
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остаток на конец периода
SUM(TAIL(Filter(CrossJoin({[Measures].[Sales Val]},Descendants([Salesdate 1].currentmember,[Salesdate 1].levels(1))), NOT IsEmpty([Salesdate 1].currentmember)),1))

Так оптимальнее вот и сам все оптимизировал!!!
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33532516
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что в ваше формуле [Measures].[Sales Val]? Движение или подневной остаток?
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33533167
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireЧто в ваше формуле [Measures].[Sales Val]? Движение или подневной остаток?
Привет.
[Sales Val] - остаток на каждый день. Поэтому фактов на куб подавалось очень много, но если его разбить на партиции то все очень даже хорошо.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33533180
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А измерение времени включает только дни?
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33533506
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTER backfireЧто в ваше формуле [Measures].[Sales Val]? Движение или подневной остаток?
Привет.
[Sales Val] - остаток на каждый день. Поэтому фактов на куб подавалось очень много, но если его разбить на партиции то все очень даже хорошо.

Если товар A на начало периода P не был в системе, и только в середине периода появилась запись с его остатком, ваша формула для остатка на начало периода вернет этот остаток, а это не 0.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33534718
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так все таки какие Levels включает рабочее измерение времени?
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33535815
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сколько я понял , только дни и All level
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33536108
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireна сколько я понял , только дни и All level
Привет.
Не проверял такого. Помоему она не вернет его остаток.
Что касается дней. Это виртуальное измерение и там дни лежат все на одном уровне. Это только дни. Хотя... нет не вернет она его остаток она напишет там 0. Вы мажете сами это проверить.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33536160
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какже месяцы, недели, кварталы, годы?
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33540694
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикА какже месяцы, недели, кварталы, годы?
Все это живет в номральном измерение под название Дата. Там есть все иерархие которые нужны для отчета. Вот только уровень "день" в этой иерархии имеет свойство "день" типа "01.01.2001" это дата без времени. И на базе этого делаеться виртуальное измерение all_date и ему ставиться hide. Просто то если сделать иерархию то формула не работает если выбрать разные уровни. Непонимаю почему но это факт и это подметил backfire
как то.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33540886
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я выбираю месяц, то в формулу значения подставляются из виртуального[Salesdate 1] или же из номрального измерения под названием Дата?
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33542633
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикЕсли я выбираю месяц, то в формулу значения подставляются из виртуального[Salesdate 1] или же из номрального измерения под названием Дата?
Все значения которые ты вибираеш в измерении Дата, для расчета формулы беруться из виртуального измерения.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33542787
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. [Salesdate 1] это виртуальное измерение?
Можно рассмотреть на примере?
Я выбрал месяц Октябрь, что подставится в формулу?
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33542819
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикТ.е. [Salesdate 1] это виртуальное измерение?
Можно рассмотреть на примере?
Я выбрал месяц Октябрь, что подставится в формулу?
В формуле будут все дни октябра. Что бы не мучать себя, сделай такое измерение и просто в excel кинь их друг на друга. И все увидишь.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33542883
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне на самом деле понятен смысл формулы. Я уже решал такую задачу используя подобную формулу. И подставлял я значения напрямую из измерения времени, в котором были Годы-месяцы-дни.

Мне же непонятно использование виртуального измерения, если мы его непосредственно используем в формуле, то там всего лишь один уровень, тогда зачем нам descendants.

Прошу прощения за свою навязчивость, просто хочу разобраться.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33542902
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикМне на самом деле понятен смысл формулы. Я уже решал такую задачу используя подобную формулу. И подставлял я значения напрямую из измерения времени, в котором были Годы-месяцы-дни.

Мне же непонятно использование виртуального измерения, если мы его непосредственно используем в формуле, то там всего лишь один уровень, тогда зачем нам descendants.

Прошу прощения за свою навязчивость, просто хочу разобраться.
Чесно сказать, я сам не разбирал что и как.
Сделай и проверь следующее:
Напиши две подобные формулы в одной по нормальной иерархии времени а дургую по виртуальным дням как я.
Возьми и выдели периоды из раных годов просто декабрь 2005 и январь 2006
и ты увидишь что по дням все будет работать а с иерархией нет. Вот по этому я и использую формулу.
...
Рейтинг: 0 / 0
MS AS вычесляю период начала и конец.
    #33542924
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ, буду пробовать.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MS AS вычесляю период начала и конец.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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