Немного по реализации:
Наблюдал как-то как нужны были сложные отчёты в приложении. А ещё нужно было чтобы юзеры в приложении сами себе делали отчёты. При этом база была сложная, не всё можно было сделать SQL. (т.к. использовался Rails/ActiveRecord).
В общем то напрашивалась мысль что функциональность приложения просто переусложнена и делать его просто не нужно.
Но его почему-то делали (фактически делали универсальную систему отчётов на все случаи жизни).
Пришли к выводу что конструктор Excel pivot table — это хороший пример общего решения отчётов.
Так же было подмечено что в сводная таблица, в общем случае это — три функции.
Первая возвращает строки, вторая столбцы. Третья берёт аргументом строку и столбец и возвращает значение.
По пути был реализован новый функциональный язык программирования чтобы реализовывать эти функции.
А чтобы генерировать код на этом языке, был сделал wizard (state machine) спроизвольным количеством шагов. Вот его код был уже не универсальным а относился к конкретно нашей структуре БД. При этом движек его был универсальным.
Всё это делали долго… В общем то более менее работало.
Но потом неожидано выяснилось что юзеры только говорят что они хотят делать любые произвольные отчёты, а на самом деле они ничего не хотят. Хотят чтобы просто работало. Наверное хотят несколько встроенных отчётов, и сами не знают каких.