2016-12-20 11 views
0

У меня возникла проблема с отправкой отчетов из баз данных SQL Server с использованием SSRS, и я задаюсь вопросом, можете ли вы мне помочь.Быстрая отчетность с пользовательскими параметрами и временными наборами результатов

Когда у вас есть огромный объем данных в таблице, и вы хотите выбрать только те строки в определенных критериях, и вы хотите разрешить пользователям указывать эти критерии (например, это может быть дата начала и дату окончания), а затем вы хотите взять эти данные (в пределах критериев) и выполнить тонну других преобразований на нем, включая создание различных временных наборов результатов на этом пути (с использованием CTE или табличных переменных или таблиц Temp), чтобы наконец произвести отчет, это в основном занимает много времени в SQL. Вы можете это сделать, но вашим пользователям, возможно, придется ждать час или два с момента, когда они попали в «Отчет», в их отчет.

Я мало знаю о MDX или DAX, кубах или табличных моделях, но мне интересно, есть ли более быстрый способ делать то, что я хочу. Обратите внимание на важный аспект проблемы: пользователь задает критерии, которые должны пройти полностью обратно к исходной таблице, а затем для получения окончательного отчета необходимо применить различные преобразования (, включая temp).

Каков наилучший способ для этого? Я делаю это единственно возможным способом? Я знаю, что это широкий вопрос, но я бы хотел теоретически узнать, что такое ответ. Где я должен искать? Должен ли я смотреть на кубики? Табличные модели? Должен ли я использовать R в SQL Server?

+0

Определите «огромное количество данных». Существует ли правильная индексация столбцов, которые вы хотите, чтобы пользователь указывал критерии? –

+0

Звучит как типичное применение временных таблиц. –

+0

для меня звучит как сценарий Datawarehouse с данными, организованными по фактам и измерениям. Возможными решениями с использованием Microsoft Technology и SQL Server являются SSIntegrationServices для процессов ETL и SSAnalysisServices для разработки кубов. Разрабатывая кубы и архитектуру базы данных, STAR-Schema потребуется для поддержания производительности. Конечно, это широкая речь, поэтому у вас может быть видение, вы можете начать расследование этого веб-сайта для получения дополнительной информации ... http://www.kimballgroup.com/ –

ответ

1

Всегда есть баланс, когда дело касается больших наборов данных. Иногда имеет смысл делать некоторую работу заранее, чтобы отчеты по запросу могли работать в течение разумного промежутка времени.

Для того, чтобы модель, чтобы быть хорошим вариантом здесь некоторые общие рекомендации:

  • Многие доклады будут иметь возможность использовать общие атрибуты из модели

  • Данные включает агрегаты, не просто списки записей

  • данные делает не нужно быть живой

  • У вас есть много разработки и тестирования времени

  • Любой, кто будет использовать его в качестве источника данных будет иметь быть подготовку по структуре и хотя бы немного знакомы с MDX

Другим вариантом для вас является наличие хранимой процедуры, которая «готовит» данные для вас в одночасье в отдельной таблице. Эта таблица может быть хорошо проиндексирована, потому что время записи не так важно. Затем они сообщают об этой таблице, чтобы иметь возможность быстро извлекать данные, которые она должна представлять. Это сдвигает большую часть работы по подготовке/агрегации. Конечно, вы все же можете иметь параметры, которые ограничивают, сколько из этих данных вы отступаете.

1

Основываясь на небольшом количестве информации, которую вы нам дали (300 миллионов строк в одной ненормированной таблице), определенно существует более быстрый способ. Однако быстрых решений не будет, и вы не предоставили достаточной информации для меня, чтобы дать какие-либо рекомендации.

Я думаю, вам, возможно, потребуется найти какую-то профессиональную помощь, чтобы проанализировать вашу инфраструктуру и потребности вместе с вашими потребностями и задачами, чтобы вы могли указывать в правильном направлении.