Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Вот пример как считаю нарастаюший итог, отсортированного по убыванию поля. SUM({TAIL({ORDER({[Firmname].currentmember.level.members},[Measures].[Sales Val],ASC)}, rank([Firmname].currentmember, order( [Firmname].currentmember.level.members, [Measures].[Sales Val], BDESC )) )},[Measures].[Sales Val]) Вот если будет 1000 членов в измерении то нормалек все посчитаеться а вот когда их 11000 то она просто не в состоянии посчитать. Есть какие нибудь способы оптимизации запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 16:01 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Речь идет о MS AS 2k SP3a. Машина на которой он крутиться Intel Xeon 1.2 HT 4Gb память, на такой машине можно атомный взрыв расчитать если все считать оптимально. Может кто то уже решал эту проблему, и есть более оптимальные формулы расчета нарастаюшего итога по полю отсортерованному(по возростанию или по убыванию). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 16:11 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
OLAPMASTERВот пример как считаю нарастаюший итог, отсортированного по убыванию поля. SUM({TAIL({ORDER({[Firmname].currentmember.level.members},[Measures].[Sales Val],ASC)}, rank([Firmname].currentmember, order( [Firmname].currentmember.level.members, [Measures].[Sales Val], BDESC )) )},[Measures].[Sales Val]) Вот если будет 1000 членов в измерении то нормалек все посчитаеться а вот когда их 11000 то она просто не в состоянии посчитать. Есть какие нибудь способы оптимизации запроса? 1. Было бы проще вам подсказать, если бы Вы полностью привели текст запроса, желательно в терминах Food Mart 2000 2. Мне очень кажется, что как раз подобная тематика обсуждается в соседнем топике Рекурсия и Running Total (применительно к ABC Analysis) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 16:29 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
backfire OLAPMASTERВот пример как считаю нарастаюший итог, отсортированного по убыванию поля. SUM({TAIL({ORDER({[Firmname].currentmember.level.members},[Measures].[Sales Val],ASC)}, rank([Firmname].currentmember, order( [Firmname].currentmember.level.members, [Measures].[Sales Val], BDESC )) )},[Measures].[Sales Val]) Вот если будет 1000 членов в измерении то нормалек все посчитаеться а вот когда их 11000 то она просто не в состоянии посчитать. Есть какие нибудь способы оптимизации запроса? 1. Было бы проще вам подсказать, если бы Вы полностью привели текст запроса, желательно в терминах Food Mart 2000 2. Мне очень кажется, что как раз подобная тематика обсуждается в соседнем топике Рекурсия и Running Total (применительно к ABC Analysis) Да что то похожее.... только объемы инфо другие. Щас в терминах FoodMart2000 попробую описать.. Так... там вот даже ничего близко нету У вас есть 11000 наименований товара [itemname] и есть поле продажи в шт [sal] И нужно показать нарастающий итог по полю [sal] отсортированным по убыванию т.е. [itemname] [sal] [Running Total on Sal] Водка 55 55 Колбаса 50 105 Сыр 40 145 Масло 10 155 Хлеб 5 160 Ну тоесть Водка, Колбаса и Сыр рулят!! :-). Вот создаеться такое поле [Running Total on Sal] SUM({TAIL({ORDER({[itemname].currentmember.level.members}, [Measures].[Sal],ASC)}, rank([itemname].currentmember, order([itemname].currentmember.level.members, [Measures].[Sal], BDESC )) )},[Measures].[Sal]) Оно все нормально считает на небольших объемах но когда более даже 5 тыс членов все просто зависает! ВОТ abc анализ примерно тоже самое, там надо процент посчитать от общего итога и разместить товар по группам. Если посчитать итог то можно посчитать процент и разместить по группам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 16:57 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
2. Мне очень кажется, что как раз подобная тематика обсуждается в соседнем топике Рекурсия и Running Total (применительно к ABC Analysis) [/quot] Да очень похоже только мне еще надо отсортировать по возростанию и убыванию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 17:02 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
OLAPMASTER2. Мне очень кажется, что как раз подобная тематика обсуждается в соседнем топике Рекурсия и Running Total (применительно к ABC Analysis) Да очень похоже только мне еще надо отсортировать по возростанию и убыванию.[/quot] А я там как раз по убыванию и сортирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 17:36 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
backfire OLAPMASTER2. Мне очень кажется, что как раз подобная тематика обсуждается в соседнем топике Рекурсия и Running Total (применительно к ABC Analysis) Да очень похоже только мне еще надо отсортировать по возростанию и убыванию. А я там как раз по убыванию и сортирую.[/quot] Ну я не нашел сортировки в твоих MDX, может по тому что ты работаеш с иерархией времени которая уже отсортирована и вот у меня продукты лежат отсортированные коека по алфовиту а мне их надо отсортировать с учетом поля [SAL] и знаю я только один способ это order([itemname].currentmember.level.members, [Measures].[Sal], BDESC) Вот он тебе вернет нормальное отсортерованное множество! А уже после этого надо найти в этом множестве ранг и его складывать! Вот блин задача то, в принцепе HEAD тоже подойдет вот насколько быстро она будет работать незнаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 17:44 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
OLAPMASTER backfire OLAPMASTER2. Мне очень кажется, что как раз подобная тематика обсуждается в соседнем топике Рекурсия и Running Total (применительно к ABC Analysis) Да очень похоже только мне еще надо отсортировать по возростанию и убыванию. А я там как раз по убыванию и сортирую. Ну я не нашел сортировки в твоих MDX, может по тому что ты работаеш с иерархией времени которая уже отсортирована и вот у меня продукты лежат отсортированные коека по алфовиту а мне их надо отсортировать с учетом поля [SAL] и знаю я только один способ это order([itemname].currentmember.level.members, [Measures].[Sal], BDESC) Вот он тебе вернет нормальное отсортерованное множество! А уже после этого надо найти в этом множестве ранг и его складывать! Вот блин задача то, в принцепе HEAD тоже подойдет вот насколько быстро она будет работать незнаю.[/quot] А это что? Перетасовка колоды? Код: plaintext Я так смотрю, что вы даже не удосужились исполнить мой запрос супротив FoodMart 2000, что видите какие то иерархии времени? Так же как вы не привели ваш запрос в терминах FoodMart. Думаете я на FoodMarte живу? Но я хочу, чтобы меня понимали в этом форуме, посему переписываю запрос для FoodMart. Глянте же на результат запроса, неужли там не отсортировано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 00:26 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Еще один примерчик, в этом случае по Customers. Их в Фудмарте чуть больше 10к, что близко соответствует вашей задаче с номенклатурой. Запрос вида Код: 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. Выполняется на notebook c 1,3 Ghz жалкие 8 секундб и это с 10к елементов на оси. Еще в прошлую пятницу, я считал почти как и вы Код: 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. и запросы даже с 1000 элементов считались не менее 30 секунд, а про 10000 элементов я вообще молчу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 01:05 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Э-э... Видать не тот FoodMart юзаю. Цифирь нет совсем... 8-(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 13:03 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Злобный ныпэрсЭ-э... Видать не тот FoodMart юзаю. Цифирь нет совсем... 8-(( В поставочном варианте в Foodmart только один партишн, на данные с 97 года и их там мало. Потрудитесь создать второй партишн на таблице фактов за 98 год (для Sales это sales_fact_1998) и вы получите цифры такие же как и я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 13:24 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Блин. Какая неприятная невнимательность. Пасибки 8-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 15:16 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
Да у меня одна вычесляемая ячейка а не запрос MDX интересует. '([Time].[1998],[Measures].CURRENTMEMBER,[Customers].CURRENTMEMBER) + Iif(RANK([Customers].CURRENTMEMBER,[TotalSet])=1,null, ([Time].[Runnig Total],[Measures].CURRENTMEMBER, [TotalSet].Item(RANK([Customers].CURRENTMEMBER,[TotalSet])-2)))' Вот попробую это переделать под себя и посмотреть что получеться. Что касаеться запросов я их не пешу пока, больно грамостко это мне SQL хватает. Всеравно спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 16:26 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
OLAPMASTERДа у меня одна вычесляемая ячейка а не запрос MDX интересует. '([Time].[1998],[Measures].CURRENTMEMBER,[Customers].CURRENTMEMBER) + Iif(RANK([Customers].CURRENTMEMBER,[TotalSet])=1,null, ([Time].[Runnig Total],[Measures].CURRENTMEMBER, [TotalSet].Item(RANK([Customers].CURRENTMEMBER,[TotalSet])-2)))' Вот попробую это переделать под себя и посмотреть что получеться. Что касаеться запросов я их не пешу пока, больно грамостко это мне SQL хватает. Всеравно спасибо. Ну я то их руками только в форуме пишу, да в Sample MDX Application, a так я генератор MDX запросов пишу (на C#). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 16:47 |
|
||
|
Вычесляемое поле
|
|||
|---|---|---|---|
|
#18+
backfire OLAPMASTERДа у меня одна вычесляемая ячейка а не запрос MDX интересует. '([Time].[1998],[Measures].CURRENTMEMBER,[Customers].CURRENTMEMBER) + Iif(RANK([Customers].CURRENTMEMBER,[TotalSet])=1,null, ([Time].[Runnig Total],[Measures].CURRENTMEMBER, [TotalSet].Item(RANK([Customers].CURRENTMEMBER,[TotalSet])-2)))' Вот попробую это переделать под себя и посмотреть что получеться. Что касаеться запросов я их не пешу пока, больно грамостко это мне SQL хватает. Всеравно спасибо. Ну я то их руками только в форуме пишу, да в Sample MDX Application, a так я генератор MDX запросов пишу (на C#). Ну и у тебя получаеться готовый запрос который выполняеться оптимальным образом, а я работаю со всякими глюкующими клиентами типа Excel или OWC и запросы они сами генерят, так что сдесь есть разница. А генератор запросов MDX... меня тоже посешала такая идея, много клевого можно сделать вот только писать его на C или Delphi это блин трудно. Так что я решил пойти по вычесляемым ячейкам. Вот щас пытаюсь написать такую ячейку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 17:18 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32885395&tid=1871860]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 414ms |

| 0 / 0 |
