|
|
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
В целом, запрос будет выглядеть так: Код: sql 1. 2. 3. 4. 5. 6. Или так Код: sql 1. 2. 3. 4. 5. 6. Или так Код: sql 1. 2. 3. 4. 5. 6. Но вот как бы это записать без привязки к уровню? Если пользователь выберет уровень детализации "месяц", то ему будет показана разница предыдущего месяца с текущим. Если квартал - то будет показана разница поквартальная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2019, 22:25 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
Charles Weyland, Иерархию постройте. Y-Q-M. И уже на ней считайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2019, 22:41 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
Charles Weyland, Есть более глобальный подход к таким вычислениям. Не прописывать отдельно для каждой меры, а сделать для всех мер сразу. Например, можно здесь почитать https://devinknightsql.com/2014/08/14/mdx-time-calculations-built-to-scale/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2019, 23:06 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
спасибо)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 00:11 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
bideveloper Charles Weyland, Есть более глобальный подход к таким вычислениям. Не прописывать отдельно для каждой меры, а сделать для всех мер сразу. Например, можно здесь почитать https://devinknightsql.com/2014/08/14/mdx-time-calculations-built-to-scale/ У меня есть сомнения, что универсальный подход будет оптимален по скорости. Я иду по пути -- написать небольшой генератор и нагенерить им простыню из SCOPE. Выглядит громоздко, но оптимально по производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 08:32 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
насколько мне известно, scope как раз уменьшает производительность... если уж оптимизировать, то на уровне максимальной денормализации и прописывании мер в БД, которые останется только агрегировать в кубе без лишних сложных вычислений. А по поднятому вопросу, я почему-то ступил и не додумался написать Код: sql 1. 2. 3. 4. 5. 6. С одной стороны, работает как надо. Но с другой стороны - а что если понадобится посмотреть по номеру недели в году? или по триместру? по финансовому году? всё равно, видимо, scope'ами придётся обходиться. Думал, вдруг можно как-то узнать просто текущий уровень в пределах меры и брать по нему, чтобы десяток созданных уровней иерархий не переписывать в десяток созданных мер. получается, при создании каждой следующей меры придётся очень здорово и очень много править по коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 10:45 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
Charles Weyland С одной стороны, работает как надо. Но с другой стороны - а что если понадобится посмотреть по номеру недели в году? или по триместру? по финансовому году? всё равно, видимо, scope'ами придётся обходиться. Думал, вдруг можно как-то узнать просто текущий уровень в пределах меры и брать по нему, чтобы десяток созданных уровней иерархий не переписывать в десяток созданных мер. Да, без scope не обойтись. Но в том подходе, что я привел выше, scope пишется один раз для разных иерархий дат. А мер потом можно добавлять сколько угодно и ничего при этом менять не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 12:42 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
a_voronin У меня есть сомнения, что универсальный подход будет оптимален по скорости. Если правильно написать MDX, то это будет не быстро, а очень быстро ;) (С) Моша. Правильный (но не без огрехов) MDX для подобных вычислений можно увидеть, напр., здесь . Книжку можно найти на просторах интернета (в чисто ознакомительных целях). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 12:47 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
Charles Weyland насколько мне известно, scope как раз уменьшает производительность... О как! А откуда это известно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 13:58 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
alexdr Charles Weyland насколько мне известно, scope как раз уменьшает производительность... О как! А откуда это известно? Криво написанный SCOPE может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 15:40 |
|
||
|
MDX: как вычислить разницу текущего и предыдущего периода? Не зная уровень (год/месяц/..)
|
|||
|---|---|---|---|
|
#18+
a_voronin Криво написанный SCOPE может. А зачем его писать "криво"? Дескать, я сам себе злобный буратина и щас такой скоуп напишу, чтоб весь куб помер? Скоуп он для чего придуман был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2019, 16:59 |
|
||
|
|

start [/forum/topic.php?fid=49&gotonew=1&tid=1857424]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 392ms |

| 0 / 0 |

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