Interactive reporting: Flexible

Flexible is a system that allows users to build analytical reports and pivots on top of data stored in company data warehouse. Flexible web-application provides user with an interface to select specific data items, apply a set of  filters to them, configure columns to be used as categories for grouping, and define desired aggregations.

Flexible provides three types of reports: simple table report with filters, tree view with unlimited number of groupings, and pivot report to compare the calculations by period or by one or two categories. For any numeric indicator given Flexible can calculate minimum, maximum, mean, weighted average values and total in group and across the whole filtered dataset.

Reports generated by the system can be displayed as an HTML page (in this case user can switch to drilldown view with a single click on an aggregated or subtotal value), exported into an Excel workbook or consumed in machine-readable form via a web-service. In addition to its own datastore, Flexible can use RDBMS such as Oracle, MySQL or MS SQL as a source of data.

In this project I was responsible for the system's backend: the reporting engine, web-services API to access the engine, and an API to register a data source with Flexible so that it becomes available to users.

Technology used: Ruby/Sinatra/Sequel/Resque (backend), ElasticSearch, JavaScript/Ember.js (client-side app)
In production since 2012