Как продолжение поста @Dems (поле для комментариев было недостаточно) :) ..
Согласовано по большинству пунктов .. Если ваши данные в основном аналитические, то вы можете посмотретьв инструмент, такой как PowerPivot .В этом случае вы можете написать общий запрос, а затем разрешить пользователям получать отчеты на основе результирующего набора в знакомом инструменте (Excel).
В основе каждого механизма специальных отчетов вы найдетеНесколько общих тем:
Метаданные
Будет несколько способов описания схемы, так что модель может быть легко использована пользователем.Sql Server Reporting Services (SSRS) требует, чтобы вы построили модель метаданных, чтобы использовать построитель отчетов.При использовании PowerPivot вы можете использовать псевдонимы столбцов, чтобы сделать их более удобочитаемыми, но, в конце концов, вы просто предоставляете плоский набор данных и позволяете пользователю создавать объединения / отношения.
Построитель запросов
После того, как пользователь манипулирует метаданными, должна быть создана промежуточная система для преобразования концептуального отчета в фактический запрос.Многие инструменты измеряются на основе сложности Sql, которую они производят, поскольку это может сильно повлиять на производительность.Один из способов обойти это - создать представления, против которых механизм отчетов может создавать запросы.Один из лучших примеров этого с открытым исходным кодом, который я видел, - это движок, поддерживающий Hibernate / NHibernate (посмотрите, как различные Dialects
используются при построении запросов).
Механизм рендеринга
По моему опыту, создание механизма рендеринга - это не та дорога, по которой ты хочешь идти.Существует множество проблем, связанных с устройством, а также проблемы с внешним видом (например, как вы планируете представлять каскадные объединения / отношения?).У каждого движка рендеринга есть свои особенности (PowerPivot использует Excel, у SSRS есть служба, которая создает необработанный результат и возвращает его приложению-потребителю), который необходимо учитывать, поэтому будьте внимательны при выборе.
Ранее я упоминал, что согласился на большинство отсчетов .Я не рекомендовал бы поощрять ваших пользователей изучать Sql или разрешать им проходить Sql в базовое хранилище данных.Это открывает дверь для написания вредоносного кода и может стать кошмаром безопасности.Не говоря уже о том, что большинство бизнес-пользователей думают с точки зрения плоских таблиц, а не иерархических наборов.
Выясните, что устраивает ваших пользователей, и постарайтесь приспособить ваше решение к этому домену.Я часто обнаруживал, что для опытных бизнес-пользователей что-то вроде PowerPivot идеально подходит.Для большего числа повседневных конечных пользователей более полезно иметь «готовые» отчеты, которые могут быть изменены конечным пользователем через простой пользовательский интерфейс, который позволяет им изменять ограничения / группировки / сортировку.