The client was using multiple reports for gaming analytics

●  The reports had different but similar columns

●  The reports needed to be linked manually by Pivot Table in Excel

●  They include manually generated graphs.

●  Separate instances were being used for filtering and grouping


A unified dashboard was mandatory

●  The user should be able to apply filters, groupings and variables only once;

●  A catalog of data would extract info from the reports

●  A visual engine would plot graphs on screen

●  The underlying reports should be left unchanged

what's your challenge?


Contact us

Technical challenge

The first challenge was the variety of data storage. Some reports were pre-aggregated as structured table data. For example, in the case of the number of visits per country, per affiliate campaign and per browser, each dimension had its own SQL column. Some other reports were aggregated in a serialized format, the data being saved as a long JSON variable. Another set of reports were generated spontaneously on the fly from noSQL datastores.
The second challenge was the variety of data aggregation. Some information was only held by the country, some other information was saved by country and browser, individual events held some other information, and all variables were available: country, browser, affiliated campaign etc.
The third challenge was the variety of timing granularity. Some data was computed each minute, some each hour and most of the information came from daily aggregations.


The solution was to catalog all the available information by data store, date granularity, accesible groupings and facets, and possible combination of filters it supports.

  • The report display reads the data catalog and checks and unchecks available variables (dimensions) based on the chosen filters or groupings;

  • The data is extracted from the various data stores and aggregated programmatically before being sent to the display;

  • Since the data from separate data sources are now merged and standardized, it can be displayed both as table and as graphical data;

  • The programming language used for cataloging and grouping the data is PHP. The underlying data stores include SQL databases, noSQL and text-based (JSON) data stores. The display of the report was done using JS libraries (ChartJS and DataTable)

Dashboard facilities

Search filters

All the available data can be filtered by date, country, client, browser, affiliated promotion etc. You can select one or more values for each filter.

Grouping and aggregation

Users are subscribed and charged at regular intervals using mobile and SMS payments.

Date comparison

Compare the performance of some period with a past period of the same length . The filters and grouping apply in the same way to the comparing period as to the current one.

Display metrics

Choose which metrics to display, from one to hundreds of columns. When cataloguing data, we listed which variables are available for each filter and grouping.

Graph generation

Graphs are generated from all the displayed metrics in different chart types (pie, bar, histogram, etc). Graphs have legends attached to indicate the measuring units.

Trendlines and graph types

The graph display allows automatic insertion and removal of other variables and trendlines. You can change the graph type on the fly.

Raw data display

Besides chart display, results are displayed in a smart table, which allows filtering of rows and sorting and exporting as Excel. Charts and table data complement each other.

Quick generation

For each available piece of information, We noted the way each available piece of information was pre-saved or cached in the initial reports. Loading times are below one second for the entire dataset.

Browser compatibility

The dashboard accessing the data in the 20+ reports is optimized for both desktop and mobile display for most popular browsers, making it available whenever you need it.


Search criteria




Results - graphical side




Results - Data table


Full technology


... and any other
data source



Find more of our latest software development tutorials, launch announcements, and career opportunities.
Read our blog