Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
Дискуссия на эту тему возникла спонтанно в другом топике . Я вынес это в отдельную тему backfire MoshaЗамечу что в Юконе, Ваше выражение сработает без проблем, потому что умный Юкон умеет сам разобраться что делать с бесконечной рекурсией - он просто разобьет цикл сам понизив pass. Вот пример похожей задачи сделанной на Юконе: http://www.sqlserveranalysisservices.com/OLAPPapers/Loading%20Aggregate%20Data%20in%20AS2005v2.htm Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Коль пошла речь о рекурсии, то можно ли еще в AS2K в следующем запросе Избежать ненужных вычислений, переписав формулу для RunningTotal чтобы AS считал a la Excel, a не a la SQL. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. то есть, как переписать формулу Код: plaintext 1. 2. к виду ( Код: plaintext 1. 2. Возможно ли тут каким либо образом, притянув CalculationPass решить проблему. Проблема в том что потребное время для выполнения Код: plaintext 1. 2. пропорционально квадрату количества мемберов в [TotalSet] MoshaДа, конечно можно - это стандартная задача, и можно применить рекурсию. Посколько рекурсия в этом случае не бесконечная, то у AS2K нет с этим никаких проблем и CalculationPassValue не нужен. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights backfire MoshaДа, конечно можно - это стандартная задача, и можно применить рекурсию. Посколько рекурсия в этом случае не бесконечная, то у AS2K нет с этим никаких проблем и CalculationPassValue не нужен. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Если это стандартная задача, то об этом должно быть где то написано, примеры приведены. Но я почему то невстречал :-( Ну а у меня вот что наваялось. Код: 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. эффект от вариантов в) и с) как и ожидалось, рассчитывается гораздо быстрее чем а) Принципиально ли различие в написании в) и с)? Можно ли обойтись без использования RANK? Оно конечно не мешает, но выглядит как то коряво... Не покажете ли более "красивый" вариант, если он существует. MoshaВ Вашем примере running sum по customers это для примера или действительно надо. Как то обычно running sum делают по времени. А вообще-то конечно у Вас все очень переусложнено, можно сделать гораздо проще и никаких Rank не нужно. Хотя с другой стороны, Вы не сформулиров задачи сразу стали приводить варианты решения, поэтому я не уверен чего именно Вы хотите добиться. И еще, навеное это надо бы в другой thread, а то Дмитрий обидится - влезли мы в его дискуссию и обсуждаем вещи никак не связанные с его вопросом... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 16:29 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaВ Вашем примере running sum по customers это для примера или действительно надо. Как то обычно running sum делают по времени. А вообще-то конечно у Вас все очень переусложнено, можно сделать гораздо проще и никаких Rank не нужно. Хотя с другой стороны, Вы не сформулиров задачи сразу стали приводить варианты решения, поэтому я не уверен чего именно Вы хотите добиться. И еще, навеное это надо бы в другой thread, а то Дмитрий обидится - влезли мы в его дискуссию и обсуждаем вещи никак не связанные с его вопросом... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Running Sum не по времени, а по отсортированному сет из другого измерения (Customrs, Product etc.) действительно надо. Это лежит в основе Парето/ABC-анализа. А подход с Код: plaintext 1. я подглядел у Споффорда, где он как раз предлагает подобную формулу для Парето/ABC анализа. Теперь вы знаете для чего это и зачем. Является ли предложенный мною подход все еще переусложненным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2005, 16:30 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaА вообще-то конечно у Вас все очень переусложнено, можно сделать гораздо проще и никаких Rank не нужно. Хотя с другой стороны, Вы не сформулиров задачи сразу стали приводить варианты решения, поэтому я не уверен чего именно Вы хотите добиться. Привожу пример запроса. Нужен он для ABC анализов. Код: 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. 31. 32. 33. 34. На какой оси показывать меры - вопрос третичный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 01:28 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
Если set может быть произвольным, и отсортирован по произвольному признаку, то тогда я вообще затрудняюсь с вариантом решения. Rank не сработает как Вам хочется когда в set есть дупликаты. Споффорд эту проблему обходит гарантируя что в его set дупликатов нет. Видимо в Ваших примерах их тоже никогда не будет. Но все равно все 3 варианта выглядят довольно некрасиво. Идеальным решением было бы использовать CurrentOrdinal на алиасе, но в оффициальном MDX такого метода до сих пор нет. Так что я не знаю как решить эту задачу в общем случае. Возвращаясь ка началу темы - удтверждение, что рекурсия будет всегда быстрее чем суммирование. Тоже самое говорит и Споффорд, но тут есть о чем поспорить. Рекурсия для производительности - это обычно плохо, поскольку query optimizer на ней как правило сдается. Единственное что вытягивает примеры b и c так это formula cache, т.к. значения partial sums посчитанные на предыдущих tuples уже закешированы. Но это довольно слабая гарантия. Приготовтесь к тому, что с выходом Юкона, где query optimizer будет посильнее чем у AS2K, performance profile у подобных запросов сильно изменится и не в пользу рекурсии... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 02:10 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaЕсли set может быть произвольным, и отсортирован по произвольному признаку, то тогда я вообще затрудняюсь с вариантом решения. Rank не сработает как Вам хочется когда в set есть дупликаты. Споффорд эту проблему обходит гарантируя что в его set дупликатов нет. Видимо в Ваших примерах их тоже никогда не будет. Да, сет у меня может быть произвольным, но гарантировано без дубликатов. А у Споффорда я не нашел рекурсии только с SUM. MoshaНо все равно все 3 варианта выглядят довольно некрасиво. Идеальным решением было бы использовать CurrentOrdinal на алиасе, но в оффициальном MDX такого метода до сих пор нет. Так что я не знаю как решить эту задачу в общем случае. Что же тогда еще (добавить, изменить, удалить) в моих формулах, чтобы они стали изящными, но без потери эффективности. Что за CurrentOrdinal вы упоминаете? Что вы подрозумеваете под общим случаем? Создать CМ и засунуть его в куб? Mosha Возвращаясь ка началу темы - удтверждение, что рекурсия будет всегда быстрее чем суммирование. Тоже самое говорит и Споффорд, но тут есть о чем поспорить. Рекурсия для производительности - это обычно плохо, поскольку query optimizer на ней как правило сдается. Единственное что вытягивает примеры b и c так это formula cache, т.к. значения partial sums посчитанные на предыдущих tuples уже закешированы. Но это довольно слабая гарантия. Приготовтесь к тому, что с выходом Юкона, где query optimizer будет посильнее чем у AS2K, performance profile у подобных запросов сильно изменится и не в пользу рекурсии... Нельзя ли подробнее про формула formula cache и partial sums. Или где про это прочитать? Ну а про информацию о query optimizer в Юкона я только мечтать могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 11:15 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
Я продолжу обсуждение этой проблемы попозже. Сегодня утром я привел этот thread как пример на triage. И хотя почти половина людей по русски у нас не понимает, но приведенный MDX сам за себя говорит и проблема ясна. Так что будем ждать что произойдет дальше. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 23:41 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaЯ продолжу обсуждение этой проблемы попозже. Сегодня утром я привел этот thread как пример на triage. И хотя почти половина людей по русски у нас не понимает, но приведенный MDX сам за себя говорит и проблема ясна. Так что будем ждать что произойдет дальше. Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Моша, если вы мене растолкуете, шо такое "triage", то его публика будет через пол часа читать по англицки, какие проблемы. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 00:09 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
Triage - это такая комиссия (в основном начальников), которые решают что чинить, а что не чинить в продукте. Поскольку Юкон подходит к концу, то практически все нетривиальные проблемы должны через эту коммисию проходить. Английский перевод не нужен - они уже поняли в чем дело... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 00:19 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaTriage - это такая комиссия (в основном начальников), которые решают что чинить, а что не чинить в продукте. Поскольку Юкон подходит к концу, то практически все нетривиальные проблемы должны через эту коммисию проходить. Английский перевод не нужен - они уже поняли в чем дело... Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Неужели мои мелкие проблемы сподивигают кого то что то чинить в Юконе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 00:28 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaИ хотя почти половина людей по русски у нас не понимает Это сильно сказано!!! Пока, не понимает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 00:32 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaНо все равно все 3 варианта выглядят довольно некрасиво. Методом "научного тыка" (... и опыт - сын ошибок трудных...) я установил, что немного красоты можно добавить, избавившись от жалкого наследия VBA в лице IIF. В этом случае все выглядет гораздо изящнее. Код: 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. Но тут возникает следующий вопрос. Почему <<Set>>.Item(-1) не выбрасывает "Index out of range"??? Можно придумать 1000 ситуаций, где такое "замалчивание грехов" будет иметь пагубное влияние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 03:53 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
MoshaЯ продолжу обсуждение этой проблемы попозже Итак наступило "попозже", т.е. вышел февральский CTP. Уважаемый backfire, я думаю что Вы будете рады узнать, что в этом CTP мы добавили функцию CurrentOrdinal в MDX. Ваш сценарий сыграл в этом решающую роль :) Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 20:46 |
|
||
|
Рекурсия и Running Total (применительно к ABC Analysis)
|
|||
|---|---|---|---|
|
#18+
Mosha MoshaЯ продолжу обсуждение этой проблемы попозже Итак наступило "попозже", т.е. вышел февральский CTP. Уважаемый backfire, я думаю что Вы будете рады узнать, что в этом CTP мы добавили функцию CurrentOrdinal в MDX. Ваш сценарий сыграл в этом решающую роль :) Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Приятно слышать. А в BOL отобразили рекомендации к употреблению? А то релиз ноутс в части AS выглядит как-будто бы его писали за 2 минуты в конце рабочего дня пятницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 00:46 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32879080&tid=1871710]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 270ms |
| total: | 432ms |

| 0 / 0 |
