|
|
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Приветствую. В MS OLAP присутствует измерение [Дата] типа Time, в этом измерении есть иерархия [Г-М-Д], так же есть мера [Продажи] Есть задача сделать вычисляемое измерение [Продажи 7] по расчету продаж за 7 дней. Например, если в фильтре измерения [Дата] указать период Ноябрь 2018, то берется последний день из выбранного периода (30.11.2018) и в измерение [Продажи 7] попадают данные по продажам за период с 24.11.2018 по 30.11.2018. Смотрел в сторону функции Lag(), но правильно написать MDX не выходит. Нужна помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 12:06 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Anton_F, Убедите заказчика, что ему нужна иерархия по неделям, а не то, что вы привели в качестве примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 15:04 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Anton_FПриветствую. В MS OLAP присутствует измерение [Дата] типа Time, в этом измерении есть иерархия [Г-М-Д], так же есть мера [Продажи] Есть задача сделать вычисляемое измерение [Продажи 7] по расчету продаж за 7 дней. Например, если в фильтре измерения [Дата] указать период Ноябрь 2018, то берется последний день из выбранного периода (30.11.2018) и в измерение [Продажи 7] попадают данные по продажам за период с 24.11.2018 по 30.11.2018. Смотрел в сторону функции Lag(), но правильно написать MDX не выходит. Нужна помощь. Все правильно LAG. Первое -- у вас измерение Календаря в порядке? Там rigid связи и сортировка дат правильно проставлена? Если да, то расписываете SCOPE -- на уровне дня SUM(LAG(-6) ... Today) , на других уровнях месяц - год -- смотрите сами есть там смысл какой -- мо;ет сбросить в NULL Показатель Today рекомендую завести и множество "7 дней" -- дальше дело техники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:25 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Реализуйте через вьху где для каждого дня в Вашем календаре будут собраны продажи за последние 7 дней. Используйте оконную функцию SUM ROWS between https://professorweb.ru/my/sql-server/window-functions/level1/1_2.php SELECT empid, ordermonth, qty, SUM(qty) OVER(PARTITION BY empid ORDER BY ordermonth ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS runqty FROM Sales.EmpOrders; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 18:54 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Igor.KoРеализуйте через вьху где для каждого дня в Вашем календаре будут собраны продажи за последние 7 дней. Используйте оконную функцию SUM ROWS between https://professorweb.ru/my/sql-server/window-functions/level1/1_2.php SELECT empid, ordermonth, qty, SUM(qty) OVER(PARTITION BY empid ORDER BY ordermonth ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS runqty FROM Sales.EmpOrders; Речь шла об MDX, и о 7 днях, и через ROWS BETWEEN 7 PRECEDING можно написать, но не так как у вас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 21:53 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
a_voronin, " ROWS BETWEEN 7 PRECEDING" - вы прям разжевали а автору темы в рот положили. Если автору сложно реализовать через MDX то оконные функции будут более понятной альтернативой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 11:18 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Igor.Koa_voronin, " ROWS BETWEEN 7 PRECEDING" - вы прям разжевали а автору темы в рот положили. Если автору сложно реализовать через MDX то оконные функции будут более понятной альтернативой. Автор разрабатывает куб -- причем тут SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 12:45 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Сделал вот так: Код: sql 1. 2. 3. Работает, продажи выдает правильные. Подскажите, как исправить этот код, чтобы вместо жестко прописанной даты (&[2018-12-04T00:00:00]) брался ПОСЛЕДНИЙ день в периоде из измерения [Дата]? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 13:23 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Anton_FСделал вот так: Код: sql 1. 2. 3. Работает, продажи выдает правильные. Подскажите, как исправить этот код, чтобы вместо жестко прописанной даты (&[2018-12-04T00:00:00]) брался ПОСЛЕДНИЙ день в периоде из измерения [Дата]? Есть функция NOW() и StrToMemeber Чего-то такое городите. Код: sql 1. 2. 3. Вообще я вам советовал выше объявить такие SET на Today и Last7Days ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 14:43 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 14:44 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
a_voronin, благодарю. Немного поправил и работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. НО...мне необходимо брать не сегодняшний дату, а последний день из выбранного периода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 15:52 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Anton_F, Продажи на конец выбранного периода: (TAIL(NonEmpty(EXISTING [Дата].[День].[День],[Продажи руб]),1).item(0),[Продажи руб]) Подойдёт ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 10:49 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
mishgan1Anton_F, Продажи на конец выбранного периода: (TAIL(NonEmpty(EXISTING [Дата].[День].[День],[Продажи руб]),1).item(0),[Продажи руб]) Подойдёт ? Попробовал, не работает. Сделал так, считает вроде бы правильно: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 16:35 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Anton_Fmishgan1Anton_F, Продажи на конец выбранного периода: (TAIL(NonEmpty(EXISTING [Дата].[День].[День],[Продажи руб]),1).item(0),[Продажи руб]) Подойдёт ? Попробовал, не работает. Сделал так, считает вроде бы правильно: Код: sql 1. 2. 3. 4. Если вам нужно 7 дней от текущего CurrentMember, то это правильно. Если вам нужно от текущего дня (в любом разрезе), то через now() как говорил выше. Вот это будет напряжно по производительности Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 17:41 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Сделал так, считает вроде бы правильно: Код: sql 1. 2. 3. 4. Но правильно считает только, если раскрыть иерархию [Дата].[Г-М-Д] до уровня [День]. Что надо изменить в скрипте создания измерения, чтобы при сворачивании иерархии до месяца в поле [Продажи руб за 7 дней] выводит сумму за 7 дней (последний день указанного периода - 7 дней), а не как сейчас, выводит сумму за 7 месяцев(см. скриншот). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 12:58 |
|
||
|
Calculations: Продажи за 7 дней.
|
|||
|---|---|---|---|
|
#18+
Anton_FСделал так, считает вроде бы правильно: Код: sql 1. 2. 3. 4. Но правильно считает только, если раскрыть иерархию [Дата].[Г-М-Д] до уровня [День]. Что надо изменить в скрипте создания измерения, чтобы при сворачивании иерархии до месяца в поле [Продажи руб за 7 дней] выводит сумму за 7 дней (последний день указанного периода - 7 дней), а не как сейчас, выводит сумму за 7 месяцев(см. скриншот). Вам надо изучить оператор SCOPE. Такие проблемы разруливаются с помощью него. Нужно для каждого уровня иерархии задать своё выражение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 17:23 |
|
||
|
|

start [/forum/topic.php?fid=49&tid=1857707]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 157ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...