28.02.2012, 11:26 | #1 |
Участник
|
Увеличить скорость отчётов
Добрый день,
Коллеги, я работаю в продуктовом ретейле. В нашей компании одними из самых «тяжёлых» отчётов являются отчёты по продажам в разрезе магазинов и номенклатур. Построение отчёта может занимать от часа до дней. В настоящее время существует потребность в увеличении скорости работы отчётов. Кроме того, хотелось бы получить интерактивные отчёты. Например, чтобы пользователь мог самостоятельно определять положение колонок в отчёте, делать группировки, создавать сводные таблицы. По сути, проблема состоит из двух: как повысить скорость работы отчётов и как сделать интерактивные отчёты? Для интерактивных отчётов наиболее лучшим средством было бы использование Cognos PowerPlay. Какие я вижу способы решения этих проблем: 1. В Microsoft Dynamics AX можно использовать компонент PivotTable для сводных таблиц. Использование этого компонента позволит сделать отчёты интерактивными, но не увеличит скорость построения отчёта. 2. Перенести логику расчёта отчётов в SSRS (Reporting Services). Я думаю, что это увеличит скорость работы, но отчёты не будут интерактивными. 3. Смотреть в сторону PowerPivot для Excel 2010 или Sharepoint 2010. 4. В SQL Server 2012 появился механизм отчётов Power View. Я пробовал этот компонент и думаю, что он был бы наиболее подходящим. 5. Построить хранилище данных, куда агрегировать данные. Я думаю, что использование хранилища данных повысит скорость работы. К сожалению, с хранилищами данных опыта работы нет. Объём база данных составляет около 600 Гб, количество строк в основных таблицах 67 и 50 миллионов. СУБД Microsoft SQL Serer 2005. Хотелось бы узнать, были ли у кого-нибудь похожие задачи, и каким образом вы пытались их решить? Данная тема также опубликована на сайте SQL.ru http://www.sql.ru/forum/actualthread...d=922030&pg=-1. |
|
28.02.2012, 11:35 | #2 |
Ищущий знания...
|
Я бы такой отчет вынес в OLAP. Там пользователь может и разрезы сам настраивать и столбцы и прочее.
P.S. На том же ресурсе где вы так же создали тему (sql.ru), думаю, не составит труда найти информацию о технологии обработки данных OLAP.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
28.02.2012, 11:42 | #3 |
Участник
|
Артём,
Не могли бы вы пояснить, пожалуйста, с помощью какого клиента к OLAP можно это делать? |
|
28.02.2012, 11:46 | #4 |
Участник
|
У нас OLAP кубы.
База еще больше. Все довольны. |
|
28.02.2012, 11:49 | #5 |
Ищущий знания...
|
Цитата:
К OLAP кубам можно подключиться, например с помощью Excel З.Ы. а вообще если погуглить то можно много найти информации на эту тему
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
28.02.2012, 11:50 | #6 |
Участник
|
Logger,
Вы просматриваете OLAP-кубы в самой AX или используете какой-то клиент для этого? |
|
28.02.2012, 11:52 | #7 |
Участник
|
|
|
28.02.2012, 11:54 | #8 |
Ищущий знания...
|
Цитата:
Но лично в моем опыте использовался Excel.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
28.02.2012, 12:04 | #9 |
Участник
|
Цитата:
Сообщение от AP-1055D
Какие я вижу способы решения этих проблем:
1. В Microsoft Dynamics AX можно использовать компонент PivotTable для сводных таблиц. Использование этого компонента позволит сделать отчёты интерактивными, но не увеличит скорость построения отчёта. 2. Перенести логику расчёта отчётов в SSRS (Reporting Services). Я думаю, что это увеличит скорость работы, но отчёты не будут интерактивными. 3. Смотреть в сторону PowerPivot для Excel 2010 или Sharepoint 2010. 4. В SQL Server 2012 появился механизм отчётов Power View. Я пробовал этот компонент и думаю, что он был бы наиболее подходящим. 5. Построить хранилище данных, куда агрегировать данные. Я думаю, что использование хранилища данных повысит скорость работы. К сожалению, с хранилищами данных опыта работы нет. 5 - это совершенно другой принцип. грубо говоря, принципиально ускорение можно получить только за счет хранения промежуточных итогов. чем больше промеждуточных итогов, тем быстрее можно получить отчеты. НО: а) промежуточные итоги занимают дополнительное место на диске б) промежуточные итгги требуют значительного времени на обновление. хранилище - это и есть промежуточные итоги в хранилище вы указываете по каким данным и в каких возможных разрезах надо хранить промежуточные итоги |
|
28.02.2012, 13:04 | #10 |
Талантливый разгвоздяй
|
Цитата:
Подобные отчеты в большей степени нагружают АОСы, в меньшей - СУБД. Если у вас много таких отчетов, и они запускаются достаточно часто, и в системе много пользователей, то скоро у вас кроме проблем с отчетностью могут также внезапно появиться проблемы с общей производительностью системы. Цитата:
По мне, так если отчет в Аксапте формируется дольше 10 минут — это уже ненормально и нужно либо его оптизировать, либо переносить в OLAP. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
28.02.2012, 13:42 | #11 |
Участник
|
Спасибо всем за ответы. Хотелось бы ещё узнать мнение про хранилище данных. Кто-нибудь пробовал строить его для отчётов? Как вы думаете, для какого объёма данных имеет смысл прибегать к хранилищу? И, кстати, что вы думаете про PowerPivot, Power View?
|
|
28.02.2012, 13:43 | #12 |
Участник
|
Mazzy,
Спасибо, я немного неправильно написал, объединив средства для просмотра и хранилище. Но, согласитесь, с помощью SSRS отчёты строятся значительно быстрее внутренних отчётов AX? |
|
28.02.2012, 14:04 | #13 |
Участник
|
Цитата:
Так как мощное железо позволит прожевать даже неоптимальные запросы. А критерий вы сами для себя определяете. |
|
28.02.2012, 14:56 | #14 |
Участник
|
Цитата:
да, ssrs лучше заоптимизирован, нежели внутренний генератор отчетов. да, ssrs во многих местах не делает того, что делает внутренний генератор (не вызывает метод postLoad, например. или для ax4, ax2009 не накладывает RLS-ограничения). и за счет этого работает быстрее. поэтому разница есть, но не существенная. на проценты, но не в разы. но, в ssrs сложно вызывать аксаптовские УЖЕ готовые классы и многое приходится программировать заново вместо того, чтобы тупо вызывать метода класса. Если же из ssrs коннектиться к аксапте и выполнять методы классов, то выигрыш в скорости будет очень спорным. в общем, я хотел сказать, что ssrs - это те же самые яйца, только в профиль. ssrs - это та же самая выборка оперативных данных с дополнительными вычислениями, что и во внутреннем генераторе. принципиально ускорить можно только за счет промежуточных итогов. а это - хранилище (OLAP). но тут надо понимать, что хранилище также обладает врожденными недостатками (главный - неоперативность данных). так уж устроен этот мир. приходится выбирать |
|
28.02.2012, 15:53 | #15 |
Модератор
|
Да, это самый существенный недостаток.
Цитата:
Вопрос в том, для чего это нужно. И какие отчеты нужны. Можно и отдельными решениями строить отчеты из DWH - хоть Cognos, хоть Qlikview, да что душе угодно. Но опять - вопрос с доступом к данным и RLS. С Уважением, Георгий |
|
29.02.2012, 08:02 | #16 |
Участник
|
Думаю, имелось в виду ROLAP? звучит заманчиво, но по мануалам там ограничение на ограничении, кто-то пробовал в реале его использовать с Аксой?
Последний раз редактировалось imir; 29.02.2012 в 08:08. |
|
29.02.2012, 11:44 | #17 |
Модератор
|
На какой платформе? Я думаю много коллег использует технологии Microsoft. Ряд партнеров использует сторонние решения, например IBM Cognos или Qlikview. Которые, кстати, могут кубы в памяти строить, с огромной скоростью.
С Уважением, Георгий |
|
29.02.2012, 12:36 | #18 |
Участник
|
Как правило, на проектах используем OLAP, просмотр - Excel или в самой Аксапте (есть компонент из Office, есть самописный).
По актуальности - как уже писали коллеги выше есть разные варианты реализации, но чтобы их обсуждать нужно смотреть конкретно ваш случай. Без привлечения специалиста по этой теме (ну или изучения документации + форумов) с наскоку задачу не решить. Как правило, в ритейле достаточно актуальности "на вчера". Для оперативного планирования / закупок / пополнения все равно обычно не отчетами пользуются, а автоматическими / полуавтоматическими процедурами. P.S. с чего еще можно начать - если у вас AX 4.0 / 2009, то в поставке идут стандартные кубы. Попробуйте с ними поиграться.
__________________
Ivanhoe as is.. |
|
29.02.2012, 13:31 | #19 |
Участник
|
Ivanhoe,
А какой компонент для просмотра есть в AX? Вы имеете в виду CCPivotTable? |
|
29.02.2012, 13:40 | #20 |
Участник
|
Кстати, хотелось бы узнать какое среднее количество строк может обрабатывать компонент CCPivotTable?
|
|